0

クラスライブラリへのパラメーターの受け渡しに関するstackoverflowに関する他の投稿(たとえば、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 /ライブラリ/')

ファイル名:models / ss_model.php

行番号:88

任意の提案をいただければ幸いです。読んでくれてありがとう...

4

2 に答える 2

2

インクルードを行う簡単な方法は、APPPATHCICONSTANTを使用してドームにすることです。

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

この定数はCodeIgniterによってindex.phpに設定されているため、常にアプリケーションディレクトリを指していることがわかります。

于 2012-08-31T08:51:41.627 に答える
1

includeが機能しない場合の解決策は、includeステートメントを次のように変更することです。

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

現在のファイルの場所から自動的に開始されると想定していました。しかし、それは真実ではありません。上記の行は、現在のファイルの場所から開始するように強制します。

于 2012-08-31T00:00:59.110 に答える