[PHP-DEV] Namespaces patch backport
De: “Timm Friebe” thekid@thekid.de
Para: “PHPdev” internals@lists.php.net
Data: Hoje 06:57:30Hi,
I’ve backported the namespaces patch to current CVS HEAD. Here it is:http://sitten-polizei.de/php/php5-namespaces.diffI’ve tested it with the .phpt-tests Dmitry provided. Enjoy:)
- Timm
–
PHP Internals – PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php
É certo que o patch não será aplicado ao na versão atual (5.2.3), mas quem sabe não se aplique em um eventual 5.3 ?
SE isso acontecesse, o que disse aqui certamente não teria o teor que teve.
Não sei o quanto namespaces serão úteis num futuro, já que o próprio PHP ao invés de separar as classes e funções por namespaces/pacotes, carrega toda sua biblioteca durante a execução de um script.
A questão de namespaces (que está em discussão para se mudar o nome para “package”, por ter um funcionamento mais parecido com packages de java do que namespaces de c#) eu vejo como um grande ganho na organização de aplicações em php, principalmente em frameworks.
Eu concordo que em códigos externos ao PHP vai melhorar a organização.
Mas o que eu disse foi em relação ao código bundle do PHP.
Mas eu estive pensando… atualmente eu já separo as classes por diretórios, etc… o que mudaria eu apenas colocando um namespace lá?
Entendo quando você diz quanto ao que faz parte do “core” do PHP. Neste caso vai ficar tudo em um “namespace global” (que na pratica não muda a forma atual hehehe)
Quanto a organização na forma atual (sem namespaces), é mesmo possível deixar bem organizado as localizações das classes. Eu por exemplo tenho bastante coisa organizada de forma semelhante a que é organizada em Java: “com/empresa/alguma/coisa/…” para framework, “empresa/appname/alguma/coisa” para itens de alguma aplicacação, etc. Pode não ser a melhor forma, mas tem sido muito eficiente pra mim.
O problema em varios casos são os nomes que as classes recebem, veja PHPUnit por exemplo:
“abstract class PHPUnit_Extensions_ExceptionTestCase extends PHPUnit_Framework_TestCase”
“abstract class PHPUnit_Extensions_OutputTestCase extends PHPUnit_Framework_TestCase”
“class PHPUnit_Extensions_RepeatedTest extends PHPUnit_Extensions_TestDecorator”
“class PHPUnit_Extensions_TestDecorator extends PHPUnit_Framework_Assert implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing”
Sá pra citar alguns exemplos (há mais centenas no PEAR).
Acredito que ficaria bem interessante algo como:
import PHPUnit::Framework::*;
e utilizar somente um
new Test()
Enfim, deve ser somente questão de gosto, ou de usar uma IDE que complete código automaticamente (não o meu caso), etc.
Você tem razão, E. Silva. Aliás, o que significa E? :D
É que embora eu separe por diretórios, como pacotes java, eu apenas uso a tag @package, não refletindo no nome das classes.
Mas se for seguir o pear style guide, realmente, fica um monstrinho. Mesmo com IDE que complete código!
Como você esperava, ESilva!
http://blog.agoraproduction.com/index.php?/archives/51-Namespaces-has-PHP-5.3-Or-the-other-way-around.html
:D
Agora so preciso modificar meu framework pra usar isso, vai ficar lindo!!!