[POO] Class Path

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [POO] Class Path

par damo » 25 févr. 2008, 10:13

Mmmm si je comprend bien ça, c'est encore experimental en PHP 5.3
Namespaces are available in PHP as of PHP 5.3.0. This section is experimental and subject to changes.
En ce qui concerne le include_path ça à l'air pas mal du tout, il suffirait que le l'execute une seule fois pour que la valeur soit accessible à tous les scripts.
Mais j'hésite ... si je trouve d'autres raisons d'imposer une initialisation à mon application, je ferais ça. A voir avec le temps...

par Cyrano » 22 févr. 2008, 14:56

...Apparement les namespaces ne seront supportés qu'avec PHP6....
Sauf erreur, PHP5.3 comporte un patch en natif pour le support des espaces de noms de PHP6.

par Hywan » 22 févr. 2008, 13:37

Ou plus simple, utilise la fonction set_include_path().

Note : avec la constante PATH_SERAPATOR pour séparer les chemins.

par Jules Petibidon » 22 févr. 2008, 12:42

Hello,

Tu n'es peut-être pas obligé de modifier le php.ini.

Pas testé mais un

Code : Tout sélectionner

php_value include_path "..."
dans un ficher .htaccess devrait convenir.

Plus d'infos ici : http://www.php.net/manual/fr/configuration.changes.php

par damo » 22 févr. 2008, 12:28

Merci pour ta reponse Hubert.
Sauf si je ne m'abuse, on est obligé de modifier php.ini pour changer la valeur de include_path.
Si c'est le cas je trouve cela assez contraignant.

Aprés enquete il semblerait que PHP5 souffre d'une vrai lacune dans ce domaine(oui je decouvre un peu)
Apparement les namespaces ne seront supportés qu'avec PHP6.
Certains frameworks auraient aussi pu m'aider, mais ce n'est pas le but.

Du coup je vais rester sur mon idée de constante de classe en attendant PHP6.

Encore merci

Re: [POO] Class Path

par Hubert Roksor » 22 févr. 2008, 11:17

Tu pourrais donner le chemin absolu de tes fichiers, mais ce n'est pas forcément très pratique.

Sinon, utilise un chemin relatif et assure-toi que PHP pointe sur le bon répertoire, par exemple avec chdir() en début de script. Si PHP ne trouve pas le fichier, il regardera dans les autres chemins spécifiés dans include_path. (get-include-path())

La solution la plus courament employée consiste à utiliser la constante dont tu parles, ou dirname(__FILE__) + chemin relatif au fichier en cours.

Sinon, tu peux toujours regarder du côté d'autoload() pour ne plus avoir à spécifier le chemin de tes fichiers de classes.

[POO] Class Path

par damo » 22 févr. 2008, 10:26

Bonjour à tous,
Voilà je m'interroge sur une chose et je voulais votre avis là-dessus.

Existe t'il un mecanisme pour gerer son class path en php5 comme on le fait en java, .net ou as ?

Par exemple, je cré plein de jolie classes que je range avec soins dans une arbo comme ci dessous

com.monprojet.core.MaClasse.php
com.monprojet.data.MonAutreClasse.php

etc...

Là où j'ai un soucis c'est lorsque MaClasse.php doit inclure MonAutreClasse.php, je suis obliger d'avoir des ../../../com/monprojet......
bon moi ça me gene un peu je trouve ça moche.

Une solution pourrais etre d'avoir une variable ou une constante CLASS_PATH_ROOT et de l'utiliser pour chaques include
include CLASS_PATH_ROOT."com/monprojet/data/MonAutreClasse.php");

C'est deja un peu plus sex. On pourrait même envisager que notre classe implemente une interface genre IClassPath.php.

Mais bon ça reste tiré par les cheveux.
Une autre solution serait qu'il existe une façon de faire que je ne connais pas ( et c'est trés probable ).


Alors voilà, qu'en pensez vous ? commente faites vous ?


Merci à tous