|
本帖最后由 bottom 于 2012-6-30 11:53 编辑
我在CI下面自己写了一个库,用于封装一些常用的操作。但是在写动态调用代码的时候遇到了一个问题,就是在下面的代码中:PHP复制代码
//生成实际命令类所在文件路径
$filepath = APPPATH . 'libraries/Seashell/bin/' . $command .'.php';
//判断文件是否存在
if(file_exists($filepath))
{
//存在,引入实际命令类
require $filepath;
//实际命令类名称首字母大写
$class_name = ucfirst($command);
//调试代码
$this->response = $class_name;
return;
//判断实际命令类是否存在
if(class_exists($class_name, FALSE))
{
//建立实际命令类实例,传入CI的资源变量
//$this->instance = new $class_name($this->CI);
//调用执行方法,保存返回值到$response中
//$this->response = $this->instance->run($args);
}
else
{
//否则,抛出异常
throw new Seashell_Exception ('没有此命令的定义', 'Seashell');
die();
}
}
else
{
//否则,抛出异常
throw new Seashell_Exception ('命令不存在!', 'Seashell');
die();
}
复制代码
比如说我现在的$command是“delete-ticket”,那么就应该引用文件APPPATH/libraries/Seashell/bin/delete-ticket.php。这个文件已经存在,里面的内容为:
PHP复制代码
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//这里是引用另外的一个基类文件
require dirname(__FILE__).'/../share/Base.php';
class Delete -ticket {
}
复制代码
现在有一个问题就是,当delete-ticket.php里面没有Delete-ticket类的定义,只有require一句的时候,之前的代码能够正常运行到“$this->response = $class_name;”这一句并返回。但是如果有Delete-ticket类的定义时,不管有没有require语句,都报错。
百思不得其解,求高手指点。
|
|