<?php
# model.php
namespace Model\TestModel;
class User
{
public function get()
{
return '爱因斯坦';
}
}
<?php
# run.php
use Model\TestModel\User;
require __DIR__ . '/model.php';
$user = new User();
echo $user->get();
我想實作像 Laravel Facades 一樣的用法,load.php
怎麼寫?
<?php
# run.php
require __DIR__ . '/load.php';
echo \User::get();
你需要自行實作一個Facade對象,把所有的方法都呼叫代理到真實的對象。
任何對UserFacade的靜態方法呼叫都會代理到User。
__callStatic
在有靜態呼叫的時候觸發,傳入的參數$name是UserFacade::get
靜態呼叫的方法名,$arguments是參數的陣列。Laravel官方描述Facade是簡潔的、容易記憶的類別調用,Laravel的特性基本上都提供Facade類別。在業務開發這個層面,我不推薦靜態類別呼叫的設計方式,這個我另外開個貼文討論。
參考
https://laravel.com/docs/5.4/...
http://php.net/manual/en/lang...
http://php.net/manual/en/func...