pour commencer, je suis encore à mes début en PHP et programmation OO. Alors j'ai besoin d'un coup de main pour comprendre et résoudre un problème.
J'ai recoder un exemple plus simple de l'imbrication de classe que celui qui me pose le problème.
Au final je désire avoir un fichier de classe pour chacune.
Voici : lorsque je fais un appel à une classe qui elle même en appel une (3 ième niveau) cela me donne l'erreur de chargement du fichier de la classe "Warning: require_once(..../Ctest_B.php) [function.require-once]: failed to open stream: No such file or directory in....." et le message "Fatal error: require_once() [function.require]: Failed opening required '..../Ctest_B.php' (include_path='....' in ...."
Les script qui suivent permette de vérifier :
- le fonctionnement si les trois classes sont dans le même fichier. Cela fonctionne pour moi;
- le fonctionnement de trois classes dans trois fichiers différents. Cela ne fonctionne pas pour moi.
Voici les fichiers si quelqu'un veux bien m'aider :
Code : Tout sélectionner
<?php // fichier index.php
global $Root;
global $ClassPath;
$Root = $_SERVER['DOCUMENT_ROOT'];
$ClassPath = $Root . "/class/";
print "<br>appel à " . $Root . "<br>";
require ($Root . '/ClassLoader.php');
include ("TestClass.php");
?>
-------------------------------------------------------------------------------
<?php // fichier ClassLoader.php
function __autoload($className)
{
global $Root;
$ClassPath = $Root . "/class/";
print "Chargement du fichier de la classe '" . $ClassPath . $className . ".php'<br>";
require_once($ClassPath . $className . ".php");
}
?>
---------------------------------------------------------------------------
<?PHP // fichier TestClass.php
?>
<HTML lang=fr>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Expire" content="now" />
</Head>
<Body>
<TABLE align="center">
<FORM Action="index.php" Method="post" enctype="multipart/form-data">
<TR><TD>
<H1>Test des class Ctest</H1>
</TD></TR>
<TR><TD>
<fieldset id="Ctest">
<?php
print "Démonstration de trois classes déclarées dans le même fichier.<br>";
print "Appel de la classe FFF<br>";
$F = new CtestFFF();
$F->pFFF();
Print "<br><br>";
Print "Démonstration de trois classes déclarées dans des<br>";
Print "fichiers différents avec la même structure d'appel.<br>";
print "Démonstration du fonctionnement de la classe A<br>";
$A = new CtestA();
$A->pA();
print "<br>Démonstration du fonctionnement de la classe B qui utilise A<br>";
$B = new CtestB();
$B->pB();
print "<br>Démonstration du fonctionnement de la classe C qui utilise B et A<br>";
$C = new CtestC();
$C->pC();
?>
</fieldset>
</TD></TR>
<input type="hidden" name="Etape" value="2">
<TR>
<TD><br><center><INPUT Type='submit' Action='Verifier'></center></TD>
</TR>
</FORM>
</TABLE>
</body>
</HTML>
---------------------------------------------------------------------------------------------
<?php // fichier : . /Class/CtestFFF.php
class CtestF
{
var $A;
function pF()
{
$this->A = "Class F active<br>";
print $this->A;
}
}
class CtestFF
{
var $B;
function pFF()
{
$this->B = "CLass FF active<br>";
print $this->B;
$C = new CtestF();
$C->pF();
}
}
class CtestFFF
{
var $B;
function pFFF()
{
$this->B = "CLass FFF active<br>";
print $this->B;
$C = new CtestFF();
$C->pFF();
}
}
?>
------------------------------------------------------------------------------------
<?php // fichier : ./Class/CtestA.php
class CtestA
{
var $A;
public function pA()
{
$this->A = "Class A active<br>";
print $this->A;
}
}
?>
----------------------------------------------------------------------------------
<?php // fichier : ./Class/CtestB.php
class CtestB
{
var $B;
public function pB()
{
$this->B = "Classe B active<br>";
print $this->B;
$C = new CtestA();
$C->pA();
}
}
?>
----------------------------------------------------------------------------------------------
<?php // fichier : ./Class/CtestC.php
class CtestC
{
var $C;
public function pC()
{
$this->C = "Class C active<br>";
print $this->C;
$D = new Ctest_B;
$D->pB();
}
}
?>
Code : Tout sélectionner
Démonstration de trois classes déclarées dans le même fichier.
Appel de la classe FFF
Chargement du fichier de la classe 'D:/Apache Group/Apache2/www/Test/class/CtestFFF.php'
CLass FFF active
CLass FF active
Class F active
Démonstration de trois classes déclarées dans des
fichiers différents avec la même structure d'appel.
Démonstration du fonctionnement de la classe A
Chargement du fichier de la classe 'D:/Apache Group/Apache2/www/Test/class/CtestA.php'
Class A active
Démonstration du fonctionnement de la classe B qui utilise A
Chargement du fichier de la classe 'D:/Apache Group/Apache2/www/Test/class/CtestB.php'
Classe B active
Class A active
Démonstration du fonctionnement de la classe C qui utilise B et A
Chargement du fichier de la classe 'D:/Apache Group/Apache2/www/Test/class/CtestC.php'
Class C active
Chargement du fichier de la classe 'D:/Apache Group/Apache2/www/Test/class/Ctest_B.php'
Warning: require_once(D:/Apache Group/Apache2/www/Test/class/Ctest_B.php) [function.require-once]: failed to open stream: No such file or directory in D:\Apache Group\Apache2\www\Test\ClassLoader.php on line 7
Fatal error: require_once() [function.require]: Failed opening required 'D:/Apache Group/Apache2/www/Test/class/Ctest_B.php' (include_path='.;D:/Apache Group/Apache2/www/Test') in D:\Apache Group\Apache2\www\Test\ClassLoader.php on line 7
Merci pour votre aide,
Jean
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
en haut à gauche de ce sujet.