Je reçois un "Appel à une fonction membre process_data() sur un non-objet dans page.class.php sur la ligne 35" même si l'objet a été appelé.Problème possible d'objet multi-instance dans PHP
est ici l'extraction de index.php montrant l'objet instantised
// require our common files
require("modules/module.php");
require("registry/objects/datetime.class.php");
require("registry/objects/page.class.php");
// load in all the objects
$datetime = new dateandtime;
$page = new page;
$module = new module;
Il passe ensuite à la classe Process
require("template.class.php");
$template = new template($php_path . "controllers/themes/adm/" . $page . ".html");
// Place in both commonly used language and page specific language
$template->language($php_path . "controllers/language/en/adm/common.php");
$template->language($php_path . "controllers/language/en/adm/" . $page . ".php");
// Tell the page's module to load in data it needs
$module->process_data("module_" . $page);
// Output the final result
$template->output();
Il est à ce moment PHP jette l'erreur. Le contenu du fichier module.php est la suivante
class module {
public function process_data ($child) {
require($child . ".php");
read_data();
return true;
}
}
J'ai essayé de déplacer la déclaration d'instance à l'intérieur du second code collé, mais qui génère plus d'erreurs, parce que la classe qui appelle « module » dans les utilisations puis certaines des classes «modèles» aussi - le même problème se produit juste en bas de la ligne. Qu'est-ce que je me trompe, ou complètement manquant, je suis sûr que c'est le dernier mais j'ai vraiment besoin d'aide ici. Merci
var_dump a effectivement renvoyé une valeur nulle. J'avais essayé global auparavant et cela n'a pas résolu le problème. J'ai lu la documentation sur les objets et les classes, mais cela ne m'a pas éclairé; certainement personne avec des problèmes à travers plusieurs fichiers/classes. – jakeisonline
mais si vous déclarez variable $ module global dans le premier fichier, et que vous écrivez global $ module; var_dump ($ module); Qu'est ce que tu obtiens? encore nul? – empi
Bingo! N'a pas besoin de la déclaration globale dans le premier fichier, mais en ajoutant global $ module; var_dump ($ module); juste avant l'utilisation de l'objet semble avoir très bien fonctionné. Quelle est l'explication ici. Comme maintenant cela a donné la même erreur pour un objet différent, dans le fichier suivant appelé. – jakeisonline