php __call 魔術方法 整理
阿新 • • 發佈:2019-02-04
<?php
function func ()
{
echo 'function func';echo "<br/>";
}
class Cache
{
/**
* 當 呼叫的方法不存在時 會呼叫此方法
* 配合 call_user_func
* @param unknown $method
* @param array $args
*
* $cache->do();
* echo '---------';
* echo "<br/>";
*/
function __call($method, $args = [])
{
var_dump('__call');echo "<br/>";
var_dump($method);echo "<br/>";
var_dump($args);echo "<br/>";
//回撥 func 方法
call_user_func('func', $args);
//回調當前類的 func 方法
call_user_func([$this, 'func'], $args);
}
function func()
{
echo 'class func';
echo "<br/>";
}
}
$cache = new Cache();
function func ()
{
echo 'function func';echo "<br/>";
}
class Cache
{
/**
* 當 呼叫的方法不存在時 會呼叫此方法
* 配合 call_user_func
* @param unknown $method
* @param array $args
*
* $cache->do();
* echo '---------';
* echo "<br/>";
*/
function __call($method, $args = [])
{
var_dump('__call');echo "<br/>";
var_dump($method);echo "<br/>";
var_dump($args);echo "<br/>";
//回撥 func 方法
call_user_func('func', $args);
//回調當前類的 func 方法
call_user_func([$this, 'func'], $args);
}
function func()
{
echo 'class func';
echo "<br/>";
}
}
$cache = new Cache();
$cache->do('key1', 'key2');
當呼叫不存在的方法 do 的時候 __call 魔術方法就會被呼叫
以上例子會輸出
string(6) "__call"
string(2) "do"
array(2) { [0]=> string(4) "key1" [1]=> string(4) "key2" }
function func
class func