Zen Cart预加载的一个小错误

因为要添加一些自定义常量进数据库,方便后台设置,但发现后台设置的面包屑导航控制常量却依然失效未按预期执行。检查breadcrumb class代码没有问题,数据库configuration正常,最后从脚本 init_db_config_read.php 直接打印常量值也没有任何问题,这就奇怪了,其他常量设置都很正常地在跑。百思不解时突然想到可能 breadcrumb 类先于数据库常量加载,并且只有这一个可能,用 die() 检查这两个文件执行顺序发现果然如此,难怪后台设置不起作用。打开 includes/auto_loaders/config.core.php ,可以看到各种 class 的初始化是排第一位的,然后才是其他预加载操作。

#70
$autoLoadConfig[0][] = array('autoType'=>'class',
'loadFile'=>'breadcrumb.php');


#106
$autoLoadConfig[40][] = array('autoType'=>'init_script',
'loadFile'=> 'init_db_config_read.php');


解决:设置 breadcrumb 加载顺序在 init_db_config_read 之后即可,即改下标 0 大于 40 如 50:

#70
$autoLoadConfig[50][] = array('autoType'=>'class',
'loadFile'=>'breadcrumb.php');

这种情况可能还会出现于其他情况,应该算是zen cart的一个小小的bug吧。

你可能感兴趣的:(PHP,脚本)