<?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