zencart系统里面使用的常量有两种类型,一种是文件定义的常量,另一种是数据库里面定义的常量。
文件定义的常量是固定,而数据库里面定义的常量是可以动态改变的。这是他们的区别之一。
当我们在开发中遇到一些常量,如果不知道他具体什么意思,也不知道他具体在什么位置,那我们可以查询整个网站的文件,这个查询可以借助IDE来查询,个人建议使用PHPEclipse,因为他不仅可以查询还有代码提示功能,这个功能很方便,它可以大大的加快我们开发的进度。
说到这个常量的定义我们都很清楚了,特别是文件中定义的常量,我们只有define()一下就可以了。而数据库中定义的常量是可以动态改变他的值。呵呵呵...“动态的常量”,说起来有点矛盾。那么这个“动态常量”是怎么定义的呢?具体看看他所在文件includesinit_includesinit_db_config_read.php 中的定义吧,代码如下:
$use_cache = (isset($_GET['nocache']) ? false : true ) ;$configuration = $db->Execute('select configuration_key as cfgkey, configuration_value as cfgvalue from ' . TABLE_CONFIGURATION, '', $use_cache, 150); while (!$configuration->EOF) { /** * dynamic define based on info read from DB */ define(strtoupper($configuration->fields['cfgkey']), $configuration->fields['cfgvalue']);///定义数据库常量 $configuration->MoveNext();}$configuration = $db->Execute('select configuration_key as cfgkey, configuration_value as cfgvalue from ' . TABLE_PRODUCT_TYPE_LAYOUT);while (!$configuration->EOF) { /** * dynamic define based on info read from DB * @ignore */ define(strtoupper($configuration->fields['cfgkey']), $configuration->fields['cfgvalue']);//定义数据库常量 $configuration->movenext();}
这个文件是在初始化的时候执行了,所以在系统里面可以直接使用数据库里面的常量来取得他的值。比如STORE_NAME。
如果以后开发中发现在文件中找不到某一个常量的话,可以去后台--工具--开发工具,里面使用常量查询功能,其实他就是查询
CONFIGURATION 和 PRODUCT_TYPE_LAYOUT 这两个表。