コードを理解するために、codeigniter の curl ライブラリを調べていました。ここにリンクがあります。私がよくわからないこの関数 __call() があります。CIの組み込み関数ですか?たとえば、このライブラリのメソッドが呼び出されるたびに呼び出されると思います
$this->curl->simple_get();
誰か光を当ててください。codeigniter ユーザーガイドに関する情報はあまり見つかりませんでした。
コードを理解するために、codeigniter の curl ライブラリを調べていました。ここにリンクがあります。私がよくわからないこの関数 __call() があります。CIの組み込み関数ですか?たとえば、このライブラリのメソッドが呼び出されるたびに呼び出されると思います
$this->curl->simple_get();
誰か光を当ててください。codeigniter ユーザーガイドに関する情報はあまり見つかりませんでした。
いいえ - __call() は php 関数です。魔法の方法の一つとして知られています。
魔法のメソッド__call()
は、宣言されていないメソッドに対するもの__get()
であり__set()
、宣言されていないデータメンバーに対するものです。
これらのメソッドは、開発時にクラス内で定義されていないメソッドの実行にプログラムが疲れたときに、内部で自動的に呼び出されます。
__call()
2 つの引数を取ります。最初の引数は、プログラムによって呼び出される宣言されていないメソッドの名前であり、2 番目の引数は、宣言されていない配列に渡されるパラメーターのリストを含む配列です。
例
class Customer {
public function __call($name, $args) {
var_dump($name);
echo "\n";
var_dump($args);
echo "\n";
}
}
$c = new Customer();
$c->setName("some","name");
__call() は OOP の魔法の関数で、関数が見つからない場合に呼び出されます。したがって、Curl クラス内に simple_get() 関数がないため、__call() 関数が呼び出されます。そこにコメントがあり、メソッド呼び出しで何が起こるかがわかります。