我在stackoverflow上阅读了一些关于将parms传递给类库的其他帖子(例如,How to pass multiple parameters to a library in CodeIgniter?),我还阅读了library部分下的用户手册。
我想知道的是,是否可以将参数作为单个变量而不是数组传递?
我的课程 - 我想在我的codeigniter解决方案之外使用 - 看起来像这样:
<?php
class ABC
{
private $_hostname;
private $_password;
private $_username;
private $_connection;
private $_data;
private $_timeout;
private $_prompt;
public function __construct($hostname, $password, $username = "", $timeout = 10)
{
set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/phpseclib');
include('Net/SSH2.php');
$this->_hostname = $hostname;
$this->_password = $password;
$this->_username = $username;
} // __construct
public function connect()
{
}
public function dosomething()
{
}
我知道我可以这样做:
$params = array('_hostname' => $ip, '_password' => 'password', '_username' => '');
$this->load->library($classname,$params );
但我不想使用数组,因为非CI解决方案将重用此类。 我已经尝试恢复使用标准的include()语句。所以代码看起来像:
set_include_path(get_include_path() . PATH_SEPARATOR . 'var/www/myCIapp/application/libraries');
include_once('libraries/'.$classname.'.php');
但它抱怨说它无法找到包含文件。具体信息是:
遇到PHP错误
严重性:警告
消息:include_once()[function.include]:打开失败 'libraries / HP5406_ssh.php'包含在内 (include_path中= ':在/ usr /共享/ PHP的:在/ usr /共享/梨:无功/网络/ myCIapp /应用/库/')
文件名:models / ss_model.php
行号:88
任何建议将不胜感激。谢谢你的阅读...
答案 0 :(得分:2)
使用CI APPPATH
CONSTANT:
include_once(APPPATH.'libraries/'.$classname.'.php';
这个CONSTANT由CodeIgniter在index.php中设置,所以你知道它总是指向你的Application目录。
答案 1 :(得分:1)
包含无效的解决方案是将include语句更改为:
include_once dirname(__FILE__) . '/../libraries/'.$classname.'.php';
我假设它会自动以当前文件的位置开头。但事实并非如此。 上面的行将强制它从当前文件的位置开始。