能正常就怪了 class cart { function get_item() { if(!empty($_SESSION['cart'])&&is_array($_SESSION['cart'])) { return $_SESSION['cart']; } else { $_SESSION['cart']=array(); return $_SESSION['cart']; } }}$cart = new cart(); $data = $cart->get_item();
谢谢各位,当然是已经new过了,不然php5能打印出来?是不是php4不能直接在类里操作$_SESSION['cart'],要实例下? $cart = new cart(); $data=$cart->get_item(); print_r($data);PHP Version 4.3.11,PHP Version 4.4.4 下测试出错,Call to a member function on a non-objectPHP Version 4.4.6, PHP Version 5.1.2 下测试正常,可以打印出print_r($data);
Call to a member function on a non-object =========================================== 呼叫空对象的成员函数. "non-object",说明对象未实例化,即是没有new过.
可以直接打印出print_r($_SESSION['cart']); calss cart { function get_item() { if(!empty($_SESSION['cart'])&&is_array($_SESSION['cart'])) { return $_SESSION['cart']; } else { $_SESSION['cart']=array(); return $_SESSION['cart']; } } } $cart = new cart(); $data=$cart->get_item(); 但这样就提示Call to a member function on a non-object ===================================================== 我一直这么调用的,现在换服务器供应商了,版本是PHP Version 4.3.11,PHP Version 4.4.4就出现这样的错误了. 而且这样session_is_registered('cart') ? $_SESSION['cart'] : null; $_SESSION['cart'][$key] = $data[$key];也会出错Warning: Cannot use a scalar value as an array 只要session_is_registered('cart') ? $_SESSION['cart']=array() : null; $_SESSION['cart'][$key] = $data[$key];就可以了,我这么可以给各位高手什么提示了吗?
嗯,liyong98847()说的有道理.你检查一下php4下的php.ini里的register_globals是否为off,如果是on的话,$_SESSION['cart']与$cart是等效的.在register_globals=on的情况下: ============================================== $cart = new cart();//在cart类里改动了$_SESSION['cart']的值,也相当与改了$cart的值 $data=$cart->get_item();//$cart已经被改动,造成Call to a member function on a non-object你可以换个变量名试试,如果没发生错误,证明就是以上所说的问题 ==================================================== $c = new cart(); $data=$c->get_item();
class cart { function get_item()
{
if(!empty($_SESSION['cart'])&&is_array($_SESSION['cart']))
{
return $_SESSION['cart'];
}
else
{
$_SESSION['cart']=array();
return $_SESSION['cart'];
}
}}$cart = new cart();
$data = $cart->get_item();
$cart = new cart();
$data=$cart->get_item();
print_r($data);PHP Version 4.3.11,PHP Version 4.4.4 下测试出错,Call to a member function on a non-objectPHP Version 4.4.6, PHP Version 5.1.2 下测试正常,可以打印出print_r($data);
===========================================
呼叫空对象的成员函数.
"non-object",说明对象未实例化,即是没有new过.
calss cart {
function get_item()
{
if(!empty($_SESSION['cart'])&&is_array($_SESSION['cart']))
{
return $_SESSION['cart'];
}
else
{
$_SESSION['cart']=array();
return $_SESSION['cart'];
}
}
}
$cart = new cart();
$data=$cart->get_item();
但这样就提示Call to a member function on a non-object
=====================================================
我一直这么调用的,现在换服务器供应商了,版本是PHP Version 4.3.11,PHP Version 4.4.4就出现这样的错误了. 而且这样session_is_registered('cart') ? $_SESSION['cart'] : null;
$_SESSION['cart'][$key] = $data[$key];也会出错Warning: Cannot use a scalar value as an array
只要session_is_registered('cart') ? $_SESSION['cart']=array() : null;
$_SESSION['cart'][$key] = $data[$key];就可以了,我这么可以给各位高手什么提示了吗?
==============================================
$cart = new cart();//在cart类里改动了$_SESSION['cart']的值,也相当与改了$cart的值
$data=$cart->get_item();//$cart已经被改动,造成Call to a member function on a non-object你可以换个变量名试试,如果没发生错误,证明就是以上所说的问题
====================================================
$c = new cart();
$data=$c->get_item();