Bonjour,
En travaillant sur un projet en PHP j'ai constaté les faits suivant:
-Il est possible de déclarer une fonction dans une fonction.
-Il est possible de déclarer une classe dans une fonction.
-Il est possible de déclarer une fonction dans une méthode.
-Il n'est pas possible de déclarer une classe dans une méthode.
Par contre, si l'on inclus un fichier via un include(), require() ou require_once(). Il devient également possible de déclarer une classe dans une méthode.
Ne fonctionnera pas. Mais:
Cette fois cela fonctionne.
Je me demandais si le fait de déclarer des fonctions ou des classes à l'intérieur d'autres fonctions ou méthodes était à proscrire pour une raison quelconque? Bien évidemment il faut s'assurer que la fonction ou la méthode "parente" à bien été appelé avant de tenter d'appeler une fonction ou une méthode "fille" et il faut faire attention à la portée des variables contenues dans les fichiers inclus, mais à part ces quelques points à vérifier y a-t-il d'autres contres indications à utiliser une tel façon de faire?
Je me pose la question, puisqu'il me semble pratique de ne charger que les classes nécessaires selon ce que doit faire ou afficher le script. Par exemple, dans un CMS, un contrôleur principal pourrait via une méthode inclure les classes nécessaire pour tel type de page à afficher au lieu d'inclure tous les fichiers des classes de chaque type de page dans le script.
De plus, puisque include() et require() sont supposé être l'équivalent de créer un gros script unique, pourquoi les deux exemples placés plus haut ne donne pas le même résultat en causant une erreur de classe imbriqué?
Merci d'avance pour vos précisions!
Modifié par gizz (11 Jun 2010 - 19:23)
En travaillant sur un projet en PHP j'ai constaté les faits suivant:
-Il est possible de déclarer une fonction dans une fonction.
-Il est possible de déclarer une classe dans une fonction.
-Il est possible de déclarer une fonction dans une méthode.
-Il n'est pas possible de déclarer une classe dans une méthode.
Par contre, si l'on inclus un fichier via un include(), require() ou require_once(). Il devient également possible de déclarer une classe dans une méthode.
class nouvelleClasse
{
public function __construct()
{
class classeImbrique
{
public function __construct()
{
}
}
}
}
Ne fonctionnera pas. Mais:
class classeImbrique
{
public function __construct()
{
}
}
class nouvelleClasse
{
public function __construct()
{
require_once('classeImbrique.php')
}
}
Cette fois cela fonctionne.
Je me demandais si le fait de déclarer des fonctions ou des classes à l'intérieur d'autres fonctions ou méthodes était à proscrire pour une raison quelconque? Bien évidemment il faut s'assurer que la fonction ou la méthode "parente" à bien été appelé avant de tenter d'appeler une fonction ou une méthode "fille" et il faut faire attention à la portée des variables contenues dans les fichiers inclus, mais à part ces quelques points à vérifier y a-t-il d'autres contres indications à utiliser une tel façon de faire?
Je me pose la question, puisqu'il me semble pratique de ne charger que les classes nécessaires selon ce que doit faire ou afficher le script. Par exemple, dans un CMS, un contrôleur principal pourrait via une méthode inclure les classes nécessaire pour tel type de page à afficher au lieu d'inclure tous les fichiers des classes de chaque type de page dans le script.
De plus, puisque include() et require() sont supposé être l'équivalent de créer un gros script unique, pourquoi les deux exemples placés plus haut ne donne pas le même résultat en causant une erreur de classe imbriqué?
Merci d'avance pour vos précisions!
Modifié par gizz (11 Jun 2010 - 19:23)