2010-02-25 4 views
2

Question simple: préférez-vous vos classes PHP (par exemple vos classes de bibliothèque) avec le nom de votre entreprise? Exemple: Zend préfixe tout avec "Zend_", mais c'est normal car c'est un framework (donc ils veulent éviter les conflits). Est-ce que je devrais faire la même chose pour les cours de bibliothèque de mon entreprise? Est-ce que je vais avoir des conflits?Préférez-vous vos noms de classe?

Je pense que c'est plus facile à utiliser sans le préfixe (noms plus courts), mais est-ce une bonne pratique d'avoir un préfixe?

Répondre

12

PHP a namespaces. Vous devriez les utiliser au lieu de tout préfixer avec un nom. À tout le moins, vos développeurs vous remercieront quand ils n'auront pas à taper MyFrameworkName... juste pour commencer à utiliser l'une de vos classes.

+5

+1: Évitez la notation hongroise. http://en.wikipedia.org/wiki/Hungarian_notation –

+6

Les classes de préfixes ne font pas partie de la notation hongroise. –

+8

Une mauvaise notation hongroise doit être évitée. Le vrai hongrois, cependant, peut être très utile, surtout dans une langue comme PHP. –

0

Non Bien que je ne Préfixez chaque classe dans mon CMS avec MCB, à savoir

class MCB_Admin 
{ 
    // class contents... 
} 
$admin = new MCB_Admin; 

Cependant, je me suis vite décidé contre cela et maintenant il suffit d'utiliser les noms de classe standard.

3

Je préfixe toujours mes cours pour un certain nombre de raisons

  • 5,2 sera encore là pendant quelques années
  • 5.3 namespaces sont totalement laid, je ne peux pas les utiliser sans avoir nauséeux
  • et hey, apple fait cela aussi (NSString, CFXMLParser etc);))

Sérieusement, il vaut mieux éviter complètement les noms de classe explicites. Débarrassez-vous de la statique et utilisez l'injection de dépendance au lieu de new - et vous aurez beaucoup moins de mal à nommer les classes.

+0

Je suis d'accord 9001% sur les espaces de noms étant moche. Mais ils valent mieux que rien. –

+0

5.2 n'est pas un problème, il n'y a pas de contrainte pratique, juste une question théorique. –

1

Oui, oui. Je ne peux pas basculer vers des espaces de noms b/c la plupart de mes clients utilisent déjà PHP 5.3. Cela ne me dérange pas de taper un peu plus si je suis sûr d'éviter les conflits de noms. Surtout quand j'utilise ma propre bibliothèque personnalisée en plus des bibliothèques existantes.

+0

Mon entreprise héberge son application web, pas de configuration de serveur client à prendre en compte. Pas de contrainte pratique. –

+0

Parfois, la société héberge les applications web et ils n'ont pas l'intention de mettre à jour: rolleyes: – ZJR

0

i préfixe mes noms de classe avec le nom du dossier dans lequel il vit est dans

<?php 
    // filename would be "ClassName.php" in directory "directory" 
    class directory_ClassName{ 

    } 

cette façon-il à l'aide __autoload extrêmement facile

function __autoload($class_name){ 
    $file = explode("_", $class_name); 
    $file = 'app/' . implode('/', $file) . ".php"; 
    require_once($file); 
} 

qui signifie que vous ne devez charger vos classes, tout est fait automagiquement

+0

J'avais l'habitude de faire cela, puis j'ai commencé à tout jeter dans un seul répertoire ... si j'ai moins de 100 classes. Rien ne me met plus en colère que de taper "cd" :) – pestilence669

Questions connexes