1. Home
  2. /
  3. Web technology
  4. /
  5. PHP
  6. /
  7. OOP
  8. /
  9. [ PHP ] –...

[ PHP ] – OOP 8 魔術方法 __call

評等結果
點擊便能為這篇文章進行評等!
[評等總次數: 0,平均評等: 0]

再來介紹一個 魔術方法 __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’
)
)

評等結果
點擊便能為這篇文章進行評等!
[評等總次數: 0,平均評等: 0]

發佈留言

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