この記事の例では、PHP インターセプターの使用について説明します。参考のためにみんなで共有してください。詳細は以下の通りです
PHP には、以下に示すように、未定義のメソッドやプロパティがアクセスされたときに呼び出されるインターセプターがいくつか用意されています。
1、__get($property)
機能: 未定義のプロパティへのアクセスは
と呼ばれます
関数: 未定義のプロパティの値を設定するときに呼び出されます
関数: 未定義のプロパティに対して isset() が呼び出されたときに呼び出されます
関数: 未定義のプロパティに対して unset() が呼び出されたときに呼び出されます
関数: 未定義のメソッドが呼び出されたときに呼び出されます
// 未定義のプロパティに値を設定すると、set{$property} に対応するメソッドが呼び出されます
関数 __set($property, $value){
$method = "set{$property}";
If (method_exists($this, $method)){
return $this->$method($value);
}
// ユーザーが未定義のプロパティに対して isset メソッドを呼び出した場合、
関数 __isset($property){
$method = "isset{$property}";
If (method_exists($this, $method)){
return $this->$method();
}
}
// ユーザーが未定義のプロパティに対して unset メソッドを呼び出した場合、
// // 対応する unset{$property} メソッドが呼び出されたものとみなされます
関数 __unset($property){
$method = "unset{$property}";
If (method_exists($this, $method)){
return $this->$method();
}
}
関数 __call($method, $arg_array){
If (substr($method,0,3)=="get"){
$property = substr($method,3);
$property = strto lower(substr($property,0,1)).substr($property,1);
return $this->$property;
}
}
関数 testIsset(){
return isset($this->Name);
}
関数 getName(){
戻り $this->xingming;
}
関数 setName($value){
$this->xingming = $value;
}
関数 issetName(){
return !is_null($this->xingming);
}
関数 unsetName(){
$this->xingming = NULL;
}
}
echo "属性名を Li に設定します";
$intercept->名前 = "リー";
echo "$intercept->Name={$intercept->Name}";
echo "isset(Name)={$intercept->testIsset()}";
エコー「」;
echo "属性名の値をクリア";
unset($intercept->名前);
echo "$intercept->Name={$intercept->Name}";
エコー「」;
echo "未定義の getAge 関数を呼び出す";
echo "age={$intercept->getAge()}";
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo $url;
これら 2 つがあなたが望むものです。
インターセプターには変数を一括して処理したり保存したりできる機能がありますが、パブリック属性を多用するとオブジェクト指向の思考が失われます
。