2010-01-08 4 views
1

en Java, vous pouvez avoir le même type de classes et d'interfaces dans le même paquet.paquets en php?

Je me demande comment vous pourriez organiser le code de cette façon en php.

les avoir dans différents dossiers? ou utiliser étendre sur eux afin que vous puissiez au moins les organiser par superclasse? (que vous pourriez faire en java aussi).

Répondre

2

Avec PHP < 5.3, il n'y a pas de notion "réelle" de "paquet"; ce qui se fait généralement est des classes de nom comme celui-ci: Package_Subpackage_MyClassName, et la carte à cette structure pour les fichiers et les répertoires:

Package/ 
    Subpackage/ 
     MyClassName.php 

Cela correspond à la PEAR Convention, qui est largement utilisé, et bien accepté:

Les noms de classe doivent toujours commencer par une lettre majuscule. La hiérarchie PEAR est également reflétée dans le nom de la classe , chaque niveau de la hiérarchie étant séparé par un seul trait de soulignement .

Tant que vous suivez cette convention, vous pouvez faire à peu près tout ce que vous voulez - une bonne idée pourrait être de jeter un oeil sur les sources de certains Framework Open Source qui suivent cette convention, comme Zend Framework ou Doctrine.


Avec PHP> = 5.3, vous avez namespaces - ce qui signifie que les choses pourraient/va changer un peu ... Mais, comme il est encore tout à fait nouveau, les « Bonnes pratiques » ne sont pas encore bien défini ni accepté.

Le PSR-0 Final Proposal est peut-être une lecture intéressante, mais ...

+0

Heureux que vous ayez soulevé des espaces de noms, certainement une amélioration majeure de PHP 5.3. –

2

Les versions récentes de PHP ont des espaces de noms, mais à part ceux-là, c'est un free-for-all complet.

+1

cours emboîtés? Ce n'est pas vrai. PHP n'a jamais eu de classes imbriquées. –

+0

Hrm. Je pensais que c'était. Va supprimer. –

+0

Eh bien ... à proprement parler, vous pouvez avoir des fonctions ou des classes imbriquées dans des fonctions, mais elles seront définies dans la portée globale. –