代码:
public function init()
{
global $cookie, $smarty, $cart, $iso, $defaultCountry, $protocol_link, $protocol_content, $link, $css_files, $js_files;
if(!session_id()){
if(!isset($_SESSION)){
session_start();
}
}
$cookie->id_cart=$_SESSION['pj_punchout_id'];
if (self::$initialized)
return;
self::$initialized = true;
$css_files = array();
$js_files = array();
错误:
严格标准:根据第82行C:''examplep''htdocs''pjwebstoredev''classes''FrontController.php中的空值创建默认对象
我假设您使用的是Prestashop v1.4。我可以看到的主要问题是,您已经编辑了其中一个核心文件,因此大多数人都不看好将来是否能够支持您的代码。如果您想干净地修改核心类的行为,那么您应该创建一个名为/override/classes/FrontController.php的覆盖,其中包含以下内容:
class FrontController extends FrontControllerCore
{
function init()
{
// Your additional custom init code goes here
parent::init();
// And/or additional custom init code goes here
}
}
不过,当我们进入下一阶段时,这并不是根本问题。你看到的错误是因为你正在字符串中使用全局变量$cookie,但在变量被设置为任何有意义的变量之前的某个时间点(全局cookie变量实际上是在你修改的函数后面初始化的)。由于您需要操作cookie属性,因此可以尝试创建一个临时cookie对象,使用它来操作用户的cookie,然后调用核心代码,例如
class FrontController extends FrontControllerCore
{
function init()
{
if ( !session_id() ) {
if( !isset($_SESSION) ) {
session_start();
}
}
$cookieLifetime = (time() + (((int)Configuration::get('PS_COOKIE_LIFETIME_FO') > 0 ? (int)Configuration::get('PS_COOKIE_LIFETIME_FO') : 1)* 3600));
$cookie = new Cookie('ps', '', $cookieLifetime);
$cookie->id_cart=$_SESSION['pj_punchout_id'];
parent::init();
}
}