所以我试图在PHP中自动加载类;但是,__autoload()
函数似乎没有执行。即使我尝试echo
$class_name
变量,除了我在下面提供的输出之外,我什么都看不到。我已经包含了所有相关文件,并删除了它的不相关部分。根据{{3}}中的说明,我无法在CLI PHP: Autoloading Classes - Manual中使用__autoload()
,我没有使用它。任何指针都将非常感激。感谢。
index.php的输出:
致命错误: /home1/tylercro/public_html/cb-test/index.php 3 中未找到班级“日历” >
的index.php:
<?php
require_once($_SERVER['INCLUDES'] . 'prep.php');
$smarty -> assign('calendar', new Calendar());
?>
prep.php:
<?php
error_reporting(-1);
function __autoload($class_name) {
include($_SERVER['CLASSES'] . $class_name . '.php');
}
require_once($_SERVER['SMARTY_BIN'] . 'Smarty.class.php');
$smarty = new Smarty();
?>
htaccess的:
Options -Indexes
SetEnv CLASSES /home1/tylercro/public_html/cb-test/includes/classes/
SetEnv INCLUDES /home1/tylercro/public_html/cb-test/includes/
SetEnv SMARTY_BIN /home1/tylercro/smarty/
答案 0 :(得分:4)
Smarty有自己的自动加载功能,它与你的碰撞。 spl_autoload_register()
可以解决您的问题,因为它可以将任何功能注册为自动加载器。
答案 1 :(得分:4)
这post解决了我的问题。我所要做的就是将 prep.php 更改为以下内容:
<?php
error_reporting(-1);
function __autoload($class_name) {
include($_SERVER['CLASSES'] . $class_name . '.php');
}
define('SMARTY_SPL_AUTOLOAD',1);
require_once($_SERVER['SMARTY_BIN'] . 'Smarty.class.php');
spl_autoload_register('__autoload');
$smarty = new Smarty();
?>