Jusqu'à présent, nous avons deux contredisant, mais des réponses tout aussi correctes =) Voyons voir si je ne peux pas combiner les deux dans une réponse totale plus spécifique.
Si une classe nécessite un code ou des définitions dans bla.php
, vous devrez alors include("bla.php")
au moins une fois pendant toute la durée d'exécution de votre script. Si votre code précédent:
<?php
require_once("bla.php");
class controller{.....}
php>
est dans le fichier controller.php
alors vous pouvez créer control_A
de la manière suivante:
<?php
require_once("controller.php");
class control_A extends controller{...}
?>
En effet, la fonction require_once()
essentiellement des copies et colle le contenu du fichier dans le script à cette ligne. Par conséquent, ce qui précède sera considéré équivalent à ceci:
<?php
/* INSERTED FROM controller.php */
/* INSERTED FROM bla.php */
necessary definitions for controller
/* END bla.php */
class controller{.....}
/* END controller.php */
class control_A extends controller{...}
?>
Comme vous pouvez le voir, tout en exigeant controller.php
, les définitions nécessaires pour contrôleur sont vu et analysé. Ce que vous pouvez pas faire est d'omettre la déclaration de controller
. Ce n'est pas seulement parce que vous avez demandé bla.php
en le déclarant, mais vous ne pouvez pas non plus étendre une classe qui n'a pas encore été déclarée. Donc, le code suivant:
<?php
class control_A extends controller{...}
?>
va vous donner une erreur puisque le contrôleur n'a pas été défini. Une chose à prendre en compte, cependant - puisque la classe controller
ne s'étend à aucune autre classe, elle ne devrait pas avoir de dépendances externes. Il y a de fortes chances que tout ce que vous faites en bla.php
qui doit être exécuté avant de définir la classe soit est inutile, soit peut être restructuré. Quel est exactement ce que vous avez besoin bla.php
avant de définir controller
?
Cela dépend de ce que 'bla.php' fait? –