【发布时间】:2012-08-25 16:13:44
【问题描述】:
我在 stackoverflow 上阅读了一些关于将参数传递给类库的其他帖子(例如,How to pass multiple parameters to a library in CodeIgniter?),我还阅读了库部分下的用户手册。
我想知道是否可以将参数作为单个变量而不是作为数组传递?
我的课程——我想在我的 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/share/php:/usr/share/pear:var/www/myCIapp/application/libraries/')
文件名:models/ss_model.php
行号:88
任何建议将不胜感激。感谢阅读...
【问题讨论】:
-
实例化类时将变量作为参数传递给构造函数。
-
你能再具体一点吗?例如,我已经知道要执行以下操作: $params = array('_hostname' => $ip, '_password' => 'password', '_username' => ''); $this->load->library($classname,$params); //开关型号名称必须大写。
-
我认为你会在 codeigniter 之外使用它,所以在这种情况下你可以使用
$abc=new ABC($var1, $var2, $var3, $var4);来实例化它,不确定我是否已经理解了。 -
@zerkms。是的,这是有技术原因的。那就是其他解决方案 - 非 codeigniter 解决方案 - 将使用这个库并且发送一个参数数组不是实例化具有某些值集的类的传统方式。希望这足够技术性。
-
@Sheikh Heera - 你是对的。我计划在非 CI 解决方案中重用这个库。在做了更多的阅读之后..我想这基本上就是我必须走的路。只需做一个包含/要求并从那里获取它。谢谢。
标签: php codeigniter