php – 代码点火器第三方,$this-> load-> add_package_pat
我想用
elliothaughins Socialize system代码点火器,
但是我一直在努力
我跟踪过这个问题,当我打电话的时候 在loader类中如果我死($path)我只得到application / third_party. 虽然控制器的代码是,但这看起来很奇怪 class SocializeController extends CI_Controller { function __construct(){ parent::__construct(); parse_str($_SERVER['QUERY_STRING'],$_GET); $this->load->add_package_path(APPPATH.'third_party/socialize/'); $this->_autoload(); } private function _autoload(){ $this->load->model('socialize_migration_model'); $autoload = array(); include(APPPATH.'third_party/socialize/config/autoload'.EXT); foreach ( $autoload as $type => $files ) { $type = ($type == 'libraries') ? 'library' : $type; foreach ( $files as $file ){ $this->load->$type($file); } } } public function data($key,$value) { $this->load->vars(array($key => $value)); } } 你可以看到它正在调用一个成功加载的模型, 提供问题的特定库就像开始一样 class SocializeNetworks { private $_obj; private $_networks = array(); function __construct(){ $this->_obj =& get_instance(); $this->_obj->load->config('socializenetworks'); // this is the line we die on :( 所以, 什么事情发生在这里,我该如何解决? 解决方法
我在昨天的CI v2.0.2代码库中追溯到了一个bug.基本上正在发生的是你正在添加一个额外的路径来检查文件(这是正确的),并且load方法循环遍历每个路径,直到找到你要查找的文件.
如果您输出CI对象,您可能会看到您正在寻找的内容,但它仍然失败. 在文件/codeigniter/core/Config.php中,load方法由于某种原因,$found = false;通过路径循环不会在每次迭代时重置,所以如果在第一次运行时找到路径(就像我的情况那样),那么$found设置为true,但是在后续运行中,$found仍然是,所以它试图包含一个不存在的文件. 我通过将$found变量的声明移到第一个foreach循环开头的下方来解决这个问题.这样它每次都会重置它.我报告了这个bug,所以希望它会在后续版本中得到解决. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |