2009-07-30 11 views
32

J'ai vu beaucoup de schémas de nommage et d'extensions différents utilisés pour les fichiers PHP qui sont essentiellement des classes. Quelques exemples:Que dois-je nommer mon fichier de classe PHP?

  1. myClass.php
  2. myClass.class.php
  3. myClass.class

Quelle est la différence, et ce qui est mieux?

Répondre

38

Il n'y a pas de différence au-delà de ce que vous voyez. Ceux avec .class sont utiles si vous utilisez autoloading et n'avez pas de répertoire spécifique où vos fichiers de classe vivent. Sinon, c'est entièrement arbitraire. (J'avais l'habitude d'utiliser ClassName.class.php.)

+0

merci un trille ... c'est ce que je cherchais – johnnietheblack

+3

Je seconde que ... ClassName.class.php. –

5

Je préfère MyClass.php - le même nom (y compris les majuscules) que la classe. Toutefois, si vous travaillez sur un projet existant, vous devez utiliser le schéma de nommage du projet.

39

Quelles sont vos normes de codage?

Il est courant de démarrer les noms de classe avec une lettre majuscule (par exemple: class MyClass). Si vous faites cela, il s'ensuit que vous nommez le fichier MyClass.php. Et MyClass.class.php fonctionne aussi.

MyClass.class est une mauvaise idée qui pourrait permettre à quelqu'un d'afficher votre code source s'il demande ce fichier par son nom. L'utilisation de l'extension .php garantit que l'utilisateur verra uniquement la sortie après le traitement du fichier par l'interpréteur PHP qui, pour un fichier qui ne contient qu'une classe, est une page vierge.

Enfin, regardez dans autoload(), ce qui vous évite d'avoir à appeler le require_once afin de charger votre classe.


Mise à jour: Avec standard de codage PHP PSR-4, il y a maintenant une manière semi-officielle pour nommer vos fichiers de classe. Le conseil précédent-pour nommer votre fichier de classe le même que la classe avec l'extension .php-se tient toujours. Mais maintenant vous êtes censé placer ce fichier de classe dans un sous-répertoire nommé après votre espace de noms de classe; PSR-4 exige que toutes vos classes soient contenues dans un espace de noms défini par vous.

Qu'est-ce que vous obtenez pour cela? Autoloading gratuitement! Si vous utilisez Composer, vous pouvez specify the top-level directory for your classes et Composer les chargera automatiquement. Plus de require instructions pour charger vos classes.

Si vous ne voulez pas faire cela, vous n'avez pas à: PSR-4 est une recommandation, pas une exigence.

+0

Nate, j'ai entendu parler de l'autoload ... est-ce stable? le php.net l'appelle fondamentalement un dernier effort de fossé? – johnnietheblack

+2

Plus un pour le problème de sécurité soulevé avec MyClass.class – benlumley

+0

Je n'ai pas eu de problèmes avec '__autoload'. Le doc le décrit comme la dernière chance, pas le dernier fossé. Je ne pense pas que ce soit une mauvaise chose. – Nate

1

À moins de travailler sur un projet existant ou la plate-forme, j'ai tendance à se pencher vers un ensemble documenté de conventions, telles que de Zend: http://framework.zend.com/manual/en/coding-standard.naming-conventions.html

plus cela signifie que vous pouvez utiliser des outils comme PHP code renifleur pour que tout le monde tient à la convention.

De toute façon, la cohérence est le nom du jeu.Il est beaucoup plus facile pour les autres (y compris vous-même des mois) de se mettre à jour sur une base de code.

Questions connexes