如何将参数传递给类构造函数 - 而不是数组

时间:2012-08-30 20:48:12

标签: php codeigniter

我在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

任何建议将不胜感激。谢谢你的阅读...

2 个答案:

答案 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';

我假设它会自动以当前文件的位置开头。但事实并非如此。 上面的行将强制它从当前文件的位置开始。