我在php中创建了一个自定义类加载器函数 类似......
load_class($className,$parameters,$instantiate);
它应该包含该类并可选地实例化指定的类
问题在于参数。香港专业教育学院一直试图整天传递参数 我试过了
load_class('className',"'param1','param2'",TRUE);
和
load_class('className',array('param1','param2'),TRUE);
幸运的是,xD无效 是否可以通过参数? 我甚至试过..
$clas = new MyClass(array('param1','param2'));
这里是..
function load_class($class, $param=null, $instantiate=FALSE){
$object = array();
$object['is_required'] = require_once(CLASSES.$class.'.php');
if($instantiate AND $object['is_required']){
$object[$class] = new $class($param);
}
return $object;
}
答案 0 :(得分:3)
如果您使用的是PHP 5.x我真的建议您使用autoload。在PHP 5.3之前,您应该创建一种“命名空间”(我通常使用_(下划线))
autoload允许你动态地包含类,如果你的类设计得很好,那么开销是最小的。
通常我的自动加载功能如下:
<?php
function __autoload($className) {
$base = dirname(__FILE__);
$path = explode('_', $className);
$class = strtolower(implode('/',$path));
$file = $base . "/" . $class;
if (file_exists($file)) {
require $file;
}
else {
error_log('Class "' . $className . '" could not be autoloaded');
throw new Exception('Class "' . $className . '" could not be autoloaded from: '.$file);
}
}
这样调用
$car = new App_Model_Car(array('color' => 'red', 'brand' => 'ford'));
该函数将包含类
应用程序/模型/ car.php
答案 1 :(得分:1)
在我看来,您应该使用__autoload()来加载类,因为它们被引用并避免必须手动调用此方法。这正是__autoload()的用途。