[ PHP ] – OOP 8 魔術方法 __call

再來介紹一個 魔術方法 __call ,當你生成一個物件後呼叫到你沒有定義的方法時就會觸發 __call 這個方法。

//__call 呼叫到不存在的方法後 會觸發到此方法
class People {
	private $height;//身高
	private $weight;//體重
	protected $sex;//姓別 要改成 保護 子類別才可以變更它的值
	function set_height($height1) { $this->height = $height1;}
	function set_weight($weight1) {$this->weight = $weight1;}
	function set_sex($sex1) {$this->sex = $sex1;}
	function get_height() {return $this->height;}
	function get_weight() {return $this->weight;}
	function get_sex() {return $this->sex;}
	function __call($fun, $args) {
        print_r([$fun, $args]);
    }
}
$jeff = new People();
$jeff->set_height(170);
$jeff->set_weight(65);
$jeff->set_sex('male');
$jeff->set_action('sit');
echo '<br>jeff 的身高是:';
echo $jeff->get_height();
echo '<br>jeff 的體重是:';
echo $jeff->get_weight();
echo '<br>jeff 的姓別是:';
echo $jeff->get_sex();
echo '<br>jeff 的動作是:';
echo $jeff->get_action();
//顯示結果
/*
Array ( [0] => set_action [1] => Array ( [0] => sit ) )
jeff 的身高是:170
jeff 的體重是:65
jeff 的姓別是:male
jeff 的動作是:Array ( [0] => get_action [1] => Array ( ) )
*/

它回傳的資料結構就是一個陣列

array(
不存在的方法名稱,
array(
‘參數1’,
‘參數2’,
‘參數3’
)
)

!去下營經續永站本助幫能就下一點輕輕,話的您到助幫有章文的我果如 如果我的文章有幫助到您的話,輕輕點一下就能幫助本站永續經營下去!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *