クラスの高度な使用テクニックのまとめ(一)
1534 ワード
1.パラメータ伝達の組合せ接続の使用例(コアポイントは中間接続の方法であり、一般的には$this)
2.パラメータ深層呼び出しあるクラスのあるメソッドを呼び出すと、あるクラスのメソッドが存在しないことを検出し、別のクラスのメソッドを呼び出して補う必要がある
3.クラスの反射を読み込みます(コメントとメソッド、および反射によって値を取得できるメソッドコメントも含まれます).
$class->func1($v1)->func2($v2)->func3($v3);
class a {
protected $b=5;
protected $a=3;
protected $c=7;
public function test($val) {
$this->b=$val;
return $this;
}
public function test2($val){
$this->a=$val;
return $this;
}
public function test3() {
$sum =$this->b*$this->b+$this->a*$this->a;
return $sum;
}
}
class b extends a {
public function god() {
$res =$this->test(4)->test2(8)->test3();
return $res;
}
}
$m = new b();
$c = $m->god();
print_r($c);
2.パラメータ深層呼び出しあるクラスのあるメソッドを呼び出すと、あるクラスのメソッドが存在しないことを検出し、別のクラスのメソッドを呼び出して補う必要がある
class a {
public function __call($method,$args) {
$b = new b();
$m = call_user_func_array(array($b,$method),$args);
return $m;
}
}
class b {
public function test($val) {
return $val;
}
}
$a1 = new a();
$f = $a1->test(123);
print_r($f);
3.クラスの反射を読み込みます(コメントとメソッド、および反射によって値を取得できるメソッドコメントも含まれます).
class b {
/** This function is test*/
public function test($val) {
return $val;
}
/** This function is test1 */
public function test1($val) {
return $val*$val;
}
}
$reflection = new ReflectionClass ( "b" );
$m1 = $reflection->getMethod("test");
$cmt = $m1->getDocComment();
print_r($cmt);