0

次のphpエラーがあります:

PHPエラーが発生しました

重大度:通知

メッセージ:未定義の変数:t

PHPエラーが発生しました

重大度:警告

メッセージ:myclass :: __construct()の引数1がありません。1011行のxxxで呼び出され、定義されています。

私のコントローラーには以下が含まれています:

    $this->load->model('mymodel');
    $i = $this->mymodel->func(1);
    print_r($i);

mymodel:

$test = new myclass("foo", "bar");
$myarray[] = $test;
return $myarray

私のクラス :

class myclass {

var $a;
var $b;

public function __construct($t, $l) // ERROR 2
{
    $this->a = $t; // ERROR 1
    $this->b = $l;
}

}

コントローラのprint_r($ a)は、コンテンツを含む正しいオブジェクトを出力することに注意してください。

ありがとう

4

2 に答える 2

1

わかりました、それはCodeigniterによって引き起こされました。

myclassは別のファイルで宣言され、mymodelによって次のコマンドを使用してロードされます。

    $CI =& get_instance();
    $CI->load->library('myclass', $params);

ライブラリをロードするとき、Codeigniterはmyclassのインスタンスをシングルトンとして作成しますが、引数を送信しません。このエラーを防ぐには、libをロードする前にパラメーターを指定する必要があります。

    $params = array('type' => "a", 'loc' => "b");
    $CI =& get_instance();
    $CI->load->library('myclass', $params);

単一の引数ではなく、配列($ params)でなければならないことに注意してください。

于 2012-09-07T09:33:45.927 に答える
0

別の方法は、猫のanteloveの答えをコピーすることです。

そうすれば、モデルファイルとモデルのロード方法を変更するだけで済みます。

PSこれはこのSOスレッドを充実させるためだけのものです

于 2019-12-28T05:23:53.207 に答える