2008-12-16 3 views

Répondre

0

Vous n'êtes peut-être pas au courant que PHP, depuis peu, a un support d'espace de noms de première classe: http://php.net/language.namespaces.

+0

Presque - la dernière version stable est 5.2.8; namespaces sera en 5.3.0 – Greg

+0

merci pour le heads-up sur celui-là! hâte de libérer ce dispositif. – thrashr888

6

Si vous utilisez une version php < 5.3 (et vous êtes probablement, de sorte que vous ne pouvez pas utiliser les espaces de noms) que vous pouvez utiliser quelque chose comme:

<?php 
class Foo { 
    public static function aStaticMethod() { 
     // ... 
    } 
} 

Foo::aStaticMethod(); 
?> 

(copié à partir the php manual)

Je dirais que c'est une fonction d'une classe dans un sens - un regroupement de fonctionnalités. Cela n'aura aucun problème lié aux performances (vous pourriez le faire des millions de fois et vous ne le remarquerez même pas - il ne devrait y avoir aucun coût d'exécution, seulement une minute de coût d'analyse supplémentaire et c'est négligeable). Les frameworks php modernes apportent beaucoup de code et créent en interne beaucoup d'objets - je ne m'inquiéterais pas des performances php, les performances de la base de données vous toucheront presque toujours en premier. Assurez-vous que votre code est lisible et maintenable (oui, en particulier le code php;)) et si cela signifie grouper les fonctions, alors faites-le.

« 97% du temps d'optimisation prématurée est la racine de tout mal », surtout quand vous faites des pages web, et non des simulations nucléaires;)

Edit: sont php5 public et statique que, en php < 5 vous pouvez essayer:

<?php 
class Foo { 
    function aStaticMethod() { 
     // don't touch $this 
    } 
} 

Foo::aStaticMethod(); 
?> 
3

Si vous êtes si préoccupé par les performances que le chargement de 10 classes est trop lent, alors vous ne devriez pas utiliser PHP. À tout le moins, utilisez un cache d'opcode comme APC, puis le chargement des classes ne devrait pas être un fardeau du tout.

Questions connexes