J'ai cette classe qui a une fonction pour charger d'autres classes et créer des instances.session_start() provoque un objet à devenir non-objet
si vous avez utilisé cette classe comme ceci:
$test = new test();
$test->load("email");
il fonctionne parfaitement comme prévu mais lors de l'utilisation session_start();
$test = new test();
session_start();
$test->load("email");
une erreur est créée et rien d'autre est là: PHP Erreur fatale: Appel à une charge de fonction membre() sur un non-objet Bla bla bla
la classe utilisée avec session_start:
<?php
class test
{
function load($class){
static $objects = array();
if (isset($objects[$class]))
{
return $objects[$class];
}
require('libraries/'.$class.'.php');
$name = 'ext_'.$class;
$objects[$class] =& new $name();
$this->$class = $objects[$class];
return $objects[$class];
}
}
$test = new test();
session_start();
$test->load("email");
?>
et voici les bibliothèques/email.php:
<?php
class ext_email
{
function ext_email(){
echo "email is working";
}
}
?>
ca n vous s'il vous plaît conseiller ce qui ne va pas avec cela? un moyen d'améliorer la fonction de chargement? cette chose fonctionne sur certaines installations de Apache et ne fonctionne pas sur les autres. en fonction de certaines configs que je ne sais pas ce que c'est exactement ..
Je veux être en mesure de faire ce qui suit: $ test = new test();
session_start();
$test->load("email");
Merci beaucoup à l'avance
Intéressant, en tant que walkaround, ne pourriez-vous pas coller simplement l'appel 'session_start' au sommet absolu de votre code? –
Fonctionne bien sur ma fin. Peut-être devriez-vous essayer 'var_dump' sur' $ test' avant et après l'appel de 'session_start()' pour voir ce qui change. –
non je ne peux pas déplacer session_start(), c'est toujours pareil même si j'ai déplacé session_start vers le haut –