我得到一个错误,完整的错误是:
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
我使用session在其中存储cart对象,并在以后某个时候获取它。authnetCart基本上是cart对象的类。
// 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;
}
}
......
你可以在第1266行看到,代码不允许我访问它的方法。任何帮助都将不胜感激。谢谢
5条答案
按热度按时间ffscu2ro1#
你需要
include
/require
的php与您的类 * 之前 *session_start()
一样56lgkhnf2#
您的答案似乎在错误消息中。
在取消序列化AUTHNET_CART之前,请包含定义它的类。可以手动,也可以使用自动加载程序。
看起来您实际上也没有对它进行反序列化(我假设在将它填充到会话中之前已经序列化了?)
monwx1rj3#
这里的其他答案没有一个能帮我解决这个问题。
在这个特定的例子中,我使用CodeIgniter并在导致错误的行之前添加以下任意一行:
或
或
没有解决问题。
我设法通过调用我访问
Authnet_Class
的类的构造中的类定义来解决这个问题。现在我明白了,您访问
Authnet_Class
类的上下文需要在上下文的类构造中提供其定义(而不仅仅是在调用Authnet_Class
的属性之前)。cpjpxq1n4#
我不推荐这种技术,但是有一种方法可以绕过这个错误:
拥有一个良好的站点架构显然是正确的解决方案,但在问题解决之前,它可以暂时有所帮助
zd287kbt5#
如果你使用的是带有前端控制器的MVC框架,那么你需要在session_start语句之前添加autoload语句:
[前控制器]