2012-08-30 62 views
0

我在此處閱讀了關於將parms傳遞給類庫(例如,How to pass multiple parameters to a library in 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]:用於包含失敗開口 '庫/ HP5406_ssh.php' (include_path中= ':在/ usr /共享/ PHP的:在/ usr /共享/梨:無功/網絡/ myCIapp /應用/庫/')

文件名:型號/ ss_model.php

行數:88

任何意見,將不勝感激。感謝您閱讀...

+0

在實例化類時將變量作爲參數傳遞給構造函數。 –

+0

你能更具體一點嗎?例如,我已經知道如何做:$ params = array('_ hostname'=> $ ip,'_password'=>'password','_username'=>''); \t \t $ this-> load-> library($ classname,$ params); //開關型號名稱必須大寫。 – dot

+1

我想你會在codeigniter之外使用它,所以在這種情況下,你可以使用'$ abc = new ABC($ var1,$ var2,$ var3,$ var4)來實例化它;',不知道我是否理解它已經。 –

回答

2

做一個簡單的方法你可以包括使用CI APPPATH常數圓頂:

include_once(APPPATH.'libraries/'.$classname.'.php'; 

此常數在index.php由笨設置,讓你知道它會始終指向您的應用目錄。

+0

謝謝!我更喜歡這一點! – dot

1

的解決包括不工作是改變包含語句看起來像:

include_once dirname(__FILE__) . '/../libraries/'.$classname.'.php'; 

我是假設它會自動與當前文件的位置開始。但事實並非如此。 上述行將強制它從當前文件的位置開始。

相關問題