PHP5.3 alpha 1 (alpha 2 is ook beschikbaar)
Gepost door: Stijn - 25 augustus 2008 - 19:52 - Bron: php.net - Hits: 1487
PHP5.3 alpha 1 is al een tijdje uitgebracht maar blijkbaar beseft sitemasters niet dat PHP5.3 een belangrijke PHP versie is. We moeten nog niet te vroeg een gat in de lucht springen omdat 5.3 nog maar in de alpha versie zit. Het kan dus nog een tijdje duren vooraleer de final release eraan komt. PHP5.3 brengt enkele "grote" veranderingen met zich mee. Zo valt de ondersteuning voor weg voor servers die Windows 98 of ouder draaien. Op OO vlak komen er enkele nieuwe features bij. Een eerste is late static binding. Een voorbeeld brengt duidelijkheid.
class A {
public static function foo() { echo "A::foo()"; }
public static function bar() { self::foo(); }
}
class B extends A {
public static function foo() { echo "B::foo()"; }
}
B::bar(); //outputs: A::foo()
class A { { } { self::foo(); } } class B extends A { { } } B::bar(); //outputs: A::foo()
We willen dat de foo() methode in class B uitgevoerd wordt maar hij voert de methode in A uit. In PHP5.3 moet je static:: plaatsen in plaats van self::. Nog een toevoeging voor static is __callStatic. Deze object overload methode is hetzelfde als __call behalve dat je ze statisch roept ipv object. Een ander OO toevoeging is Namespaces. Namespaces zijn gekend als packages in Java en C#.NET. Lambda functies zijn ook toegevoegd. Een voorbeeld van een Lambda functie in PHP5.3.
$getal = 1337; $lambda = function( &$result ) use($getal) { $result *= $getal; }
$totaal = 10; $lambda($totaal); echo $totaal; //output: 13370
$getal = 1337; $lambda = function( &$result ) use($getal) { $result *= $getal; } $totaal = 10; $lambda($totaal); echo $totaal; //output: 13370
Er is ook aan de syntax gewerkt. De volgende syntax elementen zijn toegevoegd.
*) NOWDOC: zelfde als HEREDOC behalve dat de inhoud niet geparsed wordt (vergelijkbaar met CDATA). *) GOTO: hier vond ik niet veel informatie over, je mag altijd aanvullen. *) Ternary shortcut
<?php $is_ajax_request = ( isset($_SERVER['X-Requested-With']) ) ?: false;
//$is_ajax_request bevat nu true of false.
<?php $is_ajax_request = ( isset($_SERVER['X-Requested-With']) ) ? : false; //$is_ajax_request bevat nu true of false.
De alpha 1 versie is enkel beschikbaar voor de *nix servers. Vanaf alpha 2 komen er Windows installers.
update
PHP 5.3 alpha 2 is ook uit. Dit wil zeggen dat er een Windows installer aanwezig is.
link: http://qa.php.net
|
|
|
Gepost op: 25 augustus 2008 - 21:46 |
|
|
|
Ouwe rakker
|
|
|
|
Gepost op: 25 augustus 2008 - 23:33 |
|
|
|
-1
|
er klopt iets niet in het voorbeeld, er is geen method bar()
Edit: oops, over die bar() in Class A gelezen.
Je kan beter een duidelijker voorbeeld gegeven met een beetje realistische Class en functie namen, wordt nogal onduidelijk in dit geval.
Vooral als ik "foo" lees verwacht ik het volgende woord "bar" te zijn |
|
|
|
Gepost op: 26 augustus 2008 - 10:31 |
|
|
|
Moderator
|
Die namespaces zijn wel leuk en gemakkelijk. |
|
|
|
Gepost op: 26 augustus 2008 - 14:03 |
|
|
|
PHP interesse
|
<?php
$a = 5;
if ($a > 3) {
goto its_too_big;
}
$a = 3;
echo 'foobar';
its_too_big:
echo $a;
?>
<?php $a = 5; if ($a > 3) { goto its_too_big; } $a = 3; its_too_big: ?>
|
|
|
|
Gepost op: 26 augustus 2008 - 15:15 |
|
|
|
Crew .NET
|
Normaal is de output dan 5, niet? Maar waarom post je dit hier? Beetje uitleg graag... |
|
|
|
Gepost op: 26 augustus 2008 - 15:35 |
|
|
|
PHP expert
|
Ik snap het nut van GOTO ook niet volledig. In VBScript ben ik dit enkele keren tegen gekomen maar dat was dan ook met een event erbij.
In jou voorbeeld kan je toch gewoon die "its_too_big" code in je if plaatsen. |
|
|
|
Gepost op: 26 augustus 2008 - 16:16 |
|
|
|
-1
|
Ik ben zelf enorm tegen het gebruik van GOTO, de enige voorbeelden die ze mij ooit getoond hebben waarin GOTO gebruikt werd waren slecht geprogrammeerd en konden veel netter opgelost zonder een goto te gebruiken.
Dikwijls komen ze tot een punt waar ze in 2 for loops zitten en dan ineens tot de conclusie komen dat ze er eigenlijk helemaal niet meer moeten zijn en er uit willen springen, veel zullen dan gebruik gaan maken van een goto functie. |
|
|
|
Gepost op: 26 augustus 2008 - 16:23 |
|
|
|
PHP expert
|
Citaat: Dikwijls komen ze tot een punt waar ze in 2 for loops zitten en dan ineens tot de conclusie komen dat ze er eigenlijk helemaal niet meer moeten zijn en er uit willen springen Mhz hiervoor is goto helemaal niet nodig.
for( ... )
for( ... )
break 2;
for( ... ) for( ... ) break 2;
|
|
|
|
Gepost op: 26 augustus 2008 - 16:27 |
|
|
|
-1
|
Geldt dit ook wanneer je binnen die for in een if zit? |
|
|
|
Gepost op: 26 augustus 2008 - 16:30 |
|
|
|
PHP expert
|
Tuurlijk, als je één for loop hebt en je stopt er een if in dan doe je toch ook break. Eigenlijk staat er break 1.
http://www.curs...telwoorden |
|
|
|
"PHP Logo" |
|
|
|