8791 sujets

Développement web côté serveur, CMS

Bonjour,

Petite question sur la logique de code php.
Je débute et je me pose cette question essentielle à ma conception de pages :

Est il possible de mettre une fonction include() a l'intérieur d'une classe,
plus précisement dans une fonction display() de cette classe permettant d'afficher le contenu de la page...??

De plus cet include ajoute un fragment de code qui lui meme fait référence à une autre classe (différente, pas un extend)

C'est pas très clair comme ça, j'essayerai de fournir un exemple.
Mais en gros, je m'inquiète du fonctionnement des héritages de classes dans un cas pareil et même sur le résultat final Smiley ohwell

Si quelqu'un voit bien de quoi je parle, please, n'hésitez pas à éclaircir tout ça.

Merci d'avance
Salut,

cyberkoa a écrit :
Est il possible de mettre une fonction include() a l'intérieur d'une classe
Ben oui.

Sans code concret je ne vois pas quoi dire de plus... à part peut-être que si tu ne fais pas un extends il ne s'agit pas d'héritage.
Oui c'est tout à fait possible. Ca ne pose aucun soucis, c'est une technique courament en POO puisque tout est objet (de classe) donc les includes pour affichage sont forcément dans des méthodes (framework, moteur de template etc).

Un peu de doc ça fait jamais de mal Smiley smile : http://php.net/manual/fr/language.oop5.php
Modifié par MoOx (19 Jan 2010 - 09:29)
Salut,

Attention quand même, l'include directement dans la classe est impossible ; par contre dans une méthode oui, c'est possible (j'dit ça car j'ai déjà essayé Smiley lol ).

Si l'include fait référence à une autre classe, il n'y a pas de problème tant que cette classe existe.
Mais si la classe (ou fonction) est définie dans le fichier inclus, faut faire gaffe à ne pas le ré-inclure une 2ème fois (avec include_once/require_once) sinon il y a une erreur "classe redéfinit". Et dans ce cas le fichier ne sera exécuter qu'une fois, ce qui est assez embêtant.

Une dernière chose, pour éviter des include de partout -pour le chargement de classe- tu peux utiliser __autoload avec un set_include_path.
En clair, ceci est interdit :

class X {
include('Y.php');
}


Mais ceci est correct :

class X {
function Y () {
include('Z.php');
}
}


La règle est alors : le code est exécuté dans son contexte (comme s'il avait été copié-collé), mais les fonctions et classes définies dans le fichiers inclus sont définies globalement.