usar sirve que poo para orientado objetos metodos metodo estaticos ejemplos cuando como clases php wordpress session session-variables

php - sirve - El script intentó ejecutar un método o acceder a una propiedad de un objeto incompleto



php poo pdf (3)

Debe include / require el php con su clase ANTES de session_start() como

include PATH_TO_CLASS . ''AuthnetClassFilename.php''; session_start(); if (isset($_SESSION[''AUTHNET_CART''])) { //... }

Recibo un error, el error completo es:

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 &quot;AuthnetCart&quot; 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

Estoy usando la sesión para almacenar el objeto del carrito en él y obtenerlo más tarde en algún momento. El authnetCart es básicamente una clase para objeto de carrito.

// 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; } } ......

Puedes ver en la línea 1266, el código no me permite acceder a su método. Cualquier ayuda será muy apreciada. Gracias


Ninguna de las otras respuestas aquí realmente resolvió este problema para mí.

En este caso particular, estaba usando CodeIgniter y agregando cualquiera de las siguientes líneas antes de la línea que causó el error:

$this->load->model(''Authnet_Class'');

O

get_instance()->load->model(''Authnet_Class'')

O

include APPPATH . ''/model/Authnet_Class.php'';

No resolvió el problema.

Authnet_Class resolverlo invocando la definición de clase en el constructo de la clase donde estaba accediendo a Authnet_Class . Es decir:

class MY_Current_Context_Class extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model(''Authnet_Class''); } // somewhere below in another function I access Authnet_Class ...

Ahora entiendo que el contexto en el que accede a la clase Authnet_Class , debe tener su definición presente en la construcción de la clase del contexto (y no solo antes de invocar las propiedades de Authnet_Class ).


Parece que tu respuesta está en el mensaje de error.

Antes de deserializar AUTHNET_CART, incluya la clase que lo define. Ya sea manualmente, o utilizando un autocargador.

include PATH_TO_CLASS . ''AuthnetClassFilename.php''; if(isset($_SESSION[''AUTHNET_CART''])) {//...

Tampoco parece que en realidad lo estés deserializando (¿asumo que esto fue serializado antes de incluirlo en la sesión?)

if(isset($_SESSION[''AUTHNET_CART''])) { // Get cart from session /** UNSERIALIZE **/ $authnetCart = unserialize($_SESSION[''AUTHNET_CART'']); foreach($authnetCart->getCartItems() as $item) { // Line#1266 if ($item->getItemId() == $subscription_details->ID ) { $addNewItem = false; break; } } ...