• # namespaces en PHP

    Posté par  . Évalué à 5.

    Oui, il y a, mais depuis PHP 5.3 seulement.

    http://fr.php.net/manual/fr/language.namespaces.php
    • [^] # Re: namespaces en PHP

      Posté par  . Évalué à 1.

      Salut Vincent,

      merci pour cette info.

      Par contre, ce n'est pas tout à fait ça que je cherche.
      Le système de packages de java a plusieurs avantages, dont la résolution du problème de redondance potentielle dans le nom des classes, avantage reproduit en PHP avec les namespaces, en effet.

      Mais moi, ce qui m'intéresse, c'est surtout de formaliser le fait qu'une partie de mon application est "indépendante", et pouvoir importer toutes ses classes dans n'importe quel programme à l'aide d'une simple ligne, comme en java :

      import monPackage.*

      A l'heure actuelle, je suis obligé de faire :

      include ("monPackage/uneClasse.php");

      manuellement pour chaque classe du répertoire "monPackage".

      Y'a-t-il une solution en PHP pour résoudre ce problème ? (je n'ai pas l'impression que les namespaces le résolvent)
      • [^] # Re: namespaces en PHP

        Posté par  . Évalué à 4.

        un truc comme :
        une page "deps.inc.php" dans laquelle tu mets tes dependances (avec require_once qui est preferable a include)

        et dans ton modele de page il suffit de faire le require_once("deps.inc.php");

        ainsi, une nouvelle depedance se rajoute un une seule ligne, comme en java (puisque c'est apparement ca ton probleme).
        • [^] # Re: namespaces en PHP

          Posté par  . Évalué à 1.

          Salut Fabien,

          oui, à vrai dire c'est déjà ce que je fais ;-)
          Mais en vue de fournir mon package à des tiers, c'est plus pratique d'avoir un système "universel" comme l'outil d'importation en java.

          Du coup je relance la question : est-ce que ça existe, ou bien il faut se contenter de la solution expliquée ci-dessus par Fabien ?
    • [^] # Re: namespaces en PHP

      Posté par  . Évalué à 3.

      C'est une blague ou le langage bancale se prend encore une tare avec un séparateur identique à l'opérateur pour les élements statiques ("::") ?
      Ca promet encore un beau bordel.
  • # Autochargement des classes

    Posté par  . Évalué à 2.

    Il existe un mécanisme en PHP pour faire de l'autochargement des classes. Dans un script qui utilise des classes, il faut définir une fonction de portée globale __autoload, comme suit :
     
    function __autoload($class_name)
    {
        include('class_' . $class . '.php') ;
    }
    
    Cette fonction __autoload est appelée par le script PHP dès qu'un appel à une classe non définie est réalisée. $class_name est la chaine contenant le nom de la classe appelée (attention : "$class_name" est en minuscule même si la classe originale contient des majuscules). D'après mon exemple, si je fais quelque chose comme :
     $mon_objet = new ObjectType() ;
    
    , et que la classe ObjectType n'est pas encore définie, la fonction __autoload est appelée (si elle est définie dans la portée globale) avec l'argument "objecttype". Après, il faut étudier les possibilités, comme par exemple utiliser un préfixe pour les noms de fichier, comme dans mon exemple, nommer (ou pas) tous les fichiers de classe avec comme 'class_classname.php' , etc. Tout se passe dans le corps de la fonction __autoload(). le lien vers la documentation

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.