JeuWeb - Crée ton jeu par navigateur
problème de lecture de classes :'( - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : problème de lecture de classes :'( (/showthread.php?tid=4866)



problème de lecture de classes :'( - Ter Rowan - 03-06-2010

bonsoir

alors là besoin d'aide ^^ je me désespère !

j ai une classe de paramétrage dans le fichier paramEnergie.php :
Code PHP :
<?php
echo 'coucou de paramEnergie'; // on verra pourquoi le echo
class paramEnergie
{
// tableau des consommations d'énergie
static $_consoRef = array
(
//ref fat stress faim soif
REPOS => array( 1.0, -1.5, -1.0, 0.2, 0.1),
NORMAL => array( 1.0, 1.0, 0.4, 0.3, 0.6),
PHYSIQUE => array( 1.0, 1.5, 0.4, 1.0, 1.0),
INTELLECTUEL => array( 1.0, 0.7, 0.4, 0.5, 0.3),
GRATUIT => array( 0.0, 0.0, 0.0, 0.0, 0.0)
);

// tableau des modificateurs de consommation d'énergie
static $_consoModif = array(
// temps fatigue stress soif faim
ECONOMIE => array( 1.2, 0.6, 0.6, 1.0, 1.0),
RAPIDE => array( 0.8, 1.2, 1.2, 1.1, 1.1),
CONSCIENCIEUX => array( 1.2, 1.0, 1.1, 1.2, 1.2),
);
}

?>

j'ai un fichier qui inclut le fichier paramEnergie.php pour utiliser les informations

Code PHP :
<?php 
public function setTypeConso($typeConso)
{
if(!isset(
paramEnergie::$_consoRef[$typeConso]))
throw new
classErreur( NULL, 999, array( 'type de consommation' => $typeConso));

$this->_conso = paramEnergie::$_consoRef[$typeConso];

return
true;
}

et là fonction de ma manière d'include ça ne marche pas...

ne marche pas :
Code PHP :
<?php 
define
('REP_PARAMS', 'http://192.168.1.10/rivages/_tests/_params/');
include_once(
REP_PARAMS.'ParamEnergie.php');

ne marche pas :
Code PHP :
<?php 
include_once('http://192.168.1.10/rivages/_tests/_params/ParamEnergie.php');

marche
Code PHP :
<?php 
include_once(dirname(__FILE__).'/../_tests/_params/ParamEnergie.php');

alors quand je dis ne marche pas... je sais que j'inclus le fichier grace au coucou mais voilà l'erreur :
Citation :coucou de paramEnergie
Fatal error: Class 'paramEnergie' not found in C:\Users\Famille\Desktop\PortableZMWS\ZMWS\_web.zmwsc\rivages\action\ModActionEnergie.php on line 31

quand je dis marche, c'est que je n'ai pas le message d'erreur, et que les calculs basés sur $this->_conso se fond correctement


ModActionEnergie.php est localisé :
C:\Users\Famille\Desktop\PortableZMWS\ZMWS\_web.zmwsc\rivages\action\

ParamEnergie.php est localisé :
C:\Users\Famille\Desktop\PortableZMWS\ZMWS\_web.zmwsc\rivages\_tests\_params\


je ne comprends pas, les trois include devraient faire la même chose, ils le font presque (puisque j ai le echo qui passe, j en déduis que le fichier est inclut) pourtant il n'y en a qu'un qui "reconnait" la classe.

Une idée ? (j espère avoir tout mis)


RE: problème de lecture de classes :'( - Anthor - 03-06-2010

Quand tu inclues par http, ce n'est pas le fichier PHP qui est inclue, mais bien le fichier interprété.
Tu as donc bien en retour ton echo.


RE: problème de lecture de classes :'( - Ter Rowan - 03-06-2010

ahhhhh oki merci mais alors quelle est la meilleure solution pour donner un chemin en absolu ? (je veux dire partir de la racine et mettre les sous répertoires qui vont bien, pas partir du fichier qui cherche à inclure et se balader avec des ../../ etc..)


RE: problème de lecture de classes :'( - Anthor - 03-06-2010

Tu peux définir une constante APPLICATION_PATH dans ton bootstrap.
Ensuite, ou uniquement, tu l'ajoutes dans l'include_path.


set_include_path( APPLICATION_PATH . PATH_SEPARATOR . get_include_path() );



RE: problème de lecture de classes :'( - Ter Rowan - 03-06-2010

bon j ai regardé un peu la doc mais j'ai du mal à comprendre deux trucs

déjà je crois (... mais bon pas sur loin de là..) qu'il faudrait mettre à l'envers ton paramètrage non ?

APPLICATION_PATH . PATH_SEPARATOR . get_include_path()

=>

get_include_path() . PATH_SEPARATOR .APPLICATION_PATH



ensuite quand j'affiche mon get_include_path j'ai : C:\php5\pear

qui correspond pas du tout à la racine de mon site ou je rate un truc ?

en tout cas merci pour ton aide


RE: problème de lecture de classes :'( - Anthor - 03-06-2010

Non je met mon application en priorité car c'est celle ou j'inclus le plus de fichier. En vrai, je place Zend avant, l'application et ensuite les répertoires par défaut de PHP.
Les répertoire sont lus dans l'ordre où ils sont mis jusqu'à ce que le fichier soit trouvé.

Pour PEAR, c'est normal, avec le channel tu peux installer de nouvelles classes.
Si t'as racine n'y est pas c'est normal puisque tu souhaites l'ajouter. Retest le get_include_path ensuite, et il sera dedans ^^


RE: problème de lecture de classes :'( - Ter Rowan - 03-06-2010

ok pigé, j'avais pas bien compris le path separator, je croyais qu'on concaténait une racine avec la suite des répertoires mais non, en fait on construit une liste je passe d'un répertoire d'include a deux, celui que j'introduis

bon je sais pas si ma méthode est vraiment ce qu'il faut mais je définis dans mon fichier de config.php, à la racine ce code là :

Code PHP :
<?php 
set_include_path
(dirname(__FILE__).PATH_SEPARATOR.get_include_path() )

en partant du principe que j'ignore où est config.php si ce n'est à la "racine" de toute l'arborescence où il y aura des inclusions


RE: problème de lecture de classes :'( - Anthor - 03-06-2010

Oui c'est ça.


RE: problème de lecture de classes :'( - Ter Rowan - 04-06-2010

oki merci beaucoup Smile