Le script essayé d'exécuter une méthode ou d'accéder à une propriété d'un objet incomplètes
J'obtiens une erreur, le message d'erreur est:
Fatal error: authnet_cart_process() [<a href='function.authnet-cart-process'>function.authnet-cart-process</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "AuthnetCart" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /home/golfetc/public_html/wp-content/plugins/sccp-2.4.0/authnet_functions.php on line 1266
Je suis l'aide de session pour stocker panier de l'objet dans l'informatique et plus tard à un certain point. Le authnetCart est fondamentalement classe pour le panier de l'objet.
//Check cart in session
if(isset($_SESSION['AUTHNET_CART'])) {
//Get cart from session
$authnetCart = $_SESSION['AUTHNET_CART'];
foreach($authnetCart->getCartItems() as $item) { //Line#1266
if ($item->getItemId() == $subscription_details->ID ) {
$addNewItem = false;
break;
}
}
......
Vous pouvez le voir à la ligne 1266, le code ne me permet pas d'accéder à sa méthode. Toute aide sera très appréciée. Grâce
- Comment êtes-vous de la configuration initiale du
$_SESSION['AUTHNET_CART']
? - inclure AuthnetCart classe avant de désérialisation ou de fournir des __autoload comme indiqué par le message d'erreur. php.net/manual/en/language.oop5.serialization.php
- qu'est-ce que le var_dump() de $_SESSION['AUTHNET_CART']. si elle ne vient pas comme un objet, il peut aussi causer le problème?
- Je suis en utilisant une seule méthode d'instance afin d'initialiser l'objet: public static function getInstance() { // Si le panier n'est pas en session, créez-en un et de le mettre là // Sinon l'obtenir à partir de la session if (!isset($_SESSION['AUTHNET_CART'])) { self::$authnetCartInstance = new AuthnetCart(); $_SESSION['AUTHNET_CART'] = self::$authnetCartInstance; } else { self::$authnetCartInstance = $_SESSION['AUTHNET_CART']; } return self::$authnetCartInstance; }
- C'est tout à fait une vieille question, mais j'ai réalisé cette erreur se produit parce que les données sérialisées ne pas prendre dans les méthodes que la classe a, seules les données qu'il contient. Donc, la nouvelle instance et désérialisation il va ajouter des méthodes à l'objet et au tel. 😛
Vous devez vous connecter pour publier un commentaire.
Vous devez
include
/require
le php avec votre classe AVANTsession_start()
commeIl semble que la réponse est dans le message d'erreur.
Avant de désérialisation AUTHNET_CART, inclure la classe où elle est définie. Que ce soit manuellement ou à l'aide d'un chargeur automatique.
Il n'apparaît pas que vous êtes réellement désérialisation il soit (je suppose que cela a été sérialisé avant de les farcir, dans la séance?)
Aucune des autres réponses ici en fait résolu le problème pour moi.
Dans ce cas particulier, j'ai été en utilisant CodeIgniter et en ajoutant les lignes suivantes avant de la ligne qui a provoqué l'erreur:
OU
OU
Ne pas résoudre le problème.
J'ai réussi à le résoudre en invoquant la définition de la classe dans le construire de la classe où j'étais accès
Authnet_Class
. I. e.:Je comprends maintenant que le contexte dans lequel vous accéder à la
Authnet_Class
classe, doit avoir sa définition actuelle sur le contexte de la classe de construire (et non pas juste avant d'appeler les propriétés deAuthnet_Class
).