PHP 5.3 后新增了 __call 與__callStatic 魔法方法吕晌。
用途:
__call:當(dāng)要調(diào)用的方法不存在或權(quán)限不足時(shí)谢床,會自動調(diào)用__call 方法。
__callStatic:當(dāng)調(diào)用的靜態(tài)方法不存在或權(quán)限不足時(shí)捉偏,會自動調(diào)用__callStatic方法鸳君。
示例:
__call($funcname, $arguments)
__callStatic($funcname, $arguments)
參數(shù)說明:
$funcname String 調(diào)用的方法名稱农渊。
$arguments Array 調(diào)用方法時(shí)所帶的參數(shù)。
? ? ? 在TP5里面或颊,Db基類使用該方法在未繼承Query操作類的情況下砸紊,手動實(shí)例Query類并調(diào)用其中方法完成操作传于。如:\think\Db::name('tableName'), 在Db類里并沒有name這個(gè)靜態(tài)方法,該方法存在于操作類Query.php里面且不是一個(gè)靜態(tài)方法醉顽,而Db類也未繼承該類沼溜。TP5在Db類中使用__callStatic方法重定向了這個(gè)方法,在__callStatic方法 里面實(shí)例化Query類并調(diào)用name方法完成操作游添。