我的类命名约定:class.ClassName.php
我的类文件命名约定:class.classname.php(因此是strtolower)。
类文件位于包含路径中:/ home / content / XX / XXXXXX / html / projects / include /
//autoload.php
<?php
class Autoload {
public static function autoloadClasses($className) {
$className = strtolower($className);
$file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'include/class.' . $className. '.php';
require_once($file);
}
}
$register = spl_autoload_register('Autoload::autoloadClasses');
?>
//check4.php
<?php
$company = $s->company;
$projectName = 'development';
$items = array('type', 'scope', 'table', 'conditions');
$things = array('select', '*', 'todos', array('company'=>$company, PROJECT_NAME=>$projectName));
$combinedArray = array_combine($items, $things);
$q = new Query($combinedArray);
?>
verified classes exist and are included http://technicheian.com/images/includedClasses.png
在每个使用类的页面上(例如,这一个调用Query;位于class.query.php:
第9行 05-Nov-2011 20:18:30]PHP Fatal error: Class 'Query' not found in /home/content/XX/XXXXXX/html/projects/check4.php
是$s = new Session
(这里注明$ company变量不应为空)。
我几乎读过每篇文章,操作方法等等。我错过了什么?
运行php 5.2
答案 0 :(得分:1)
删除file_exists
检查并查看错误日志。您将看到您尝试使用哪个文件。我认为可能会对__FILE__
做什么感到困惑(因为它正在处理autoload.php文件)。
修改:看起来像这样
dirname(__FILE__) . DIRECTORY_SEPARATOR . 'include/class.'
应改为
/home/content/XX/XXXXXX/html/projects/include/class.
您需要检查以确保自动加载有效:
spl_autoload_register('Autoload::autoloadClasses')
。这样做的一个好方法是编辑php.ini并设置auto_prepend文件以调用自动加载文件。