Scriptorama.nl

Header image showing a keyboard, mouse, laptop and books on design patterns

Namespaces in PHP: nu met Use in plaats van Import

Toen ik "Namespaces in PHP 6 en PHP 5.3" schreef waren de ontwikkelaars er nog niet helemaal uit of het keyword import of een ander keyword gebruikt moest worden om aan te geven dat een bepaalde namespace geimporteerd moet worden.

Het probleem met het import keyword was namelijk dat er al veel scripts waren de bijvoorbeeld een functie of methode import() hadden. Deze scripts zouden stuk gaan wanneer deze op PHP 5.3 of PHP 6 gedraaid zouden worden.

Toen PHP 5.0 ontwikkeld werd was een namespaces al een van de geplande features. Maar aangezien dit veel onvoorziene problemen gaf is toen besloten om namespaces uit PHP 5.0 te houden om maar verder te kunnen. De ontwikkelaars hebben toen alleen niet de keywords die toen gebruikt zijn uit de parser (of eigenlijk de lexer) gehaald. Het gaat hier om de keywords use (T_USE) en namespace (T_NAMESPACE).

Parse error: syntax error, unexpected T_USE, expecting T_STRING in /Users/mathieu/use-test.php on line 3

Aangezien PHP 5 deze keywords al vanaf het begin claimed en je deze namen dus niet hebt kunnen gebruiken als klasse of functie naam is er dus eigenlijk geen probleem met scripts die zouden stuk gaan bij het upgraden naar PHP 5.3 of PHP 6. Daarom hebben de ontwikkelaars ook besloten om nu in plaats van het keyword import het keyword use te gebruiken.

Deze wijziging is inmiddels compleet en ik heb mijn artikel "Namespaces in PHP 6 en PHP 5.3" daarom ook herzien.

Overigens zijn sinds het schrijven van dat artikel ook snapshot builds van PHP 5.3 beschikbaar gekomen. Je kunt de volledige source code downloaden, maar ook binaries voor Microsoft Windows. Deze snapshot builds zijn te downloaden vanaf snaps.php.net.

Reageer ook!

Zie ook http://inside.webfactory.de/en/blog/php-namespaces-explained.html

Leave a comment
Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>