国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php 如何實作簡單的 Facades?
阿神
阿神 2017-06-21 10:10:55
0
1
865
<?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();
阿神
阿神

閉關(guān)修行中......

全部回覆(1)
扔個三星炸死你

你需要自行實作一個Facade對象,把所有的方法都呼叫代理到真實的對象。

class UserFacade
{
    private $user;

    public function __constructor()
    {
        $this->user = new User();
    }

    public function __callStatic($name, $arguments)
    {
        return call_user_func_array(array($this, $name), $arguments);
    }
}
$user UserFacade::get();

任何對UserFacade的靜態(tài)方法呼叫都會代理到User。 __callStatic在有靜態(tài)呼叫的時候觸發(fā),傳入的參數(shù)$name是UserFacade::get靜態(tài)呼叫的方法名,$arguments是參數(shù)的陣列。

Laravel官方描述Facade是簡潔的、容易記憶的類別調(diào)用,Laravel的特性基本上都提供Facade類別。在業(yè)務(wù)開發(fā)這個層面,我不推薦靜態(tài)類別呼叫的設(shè)計方式,這個我另外開個貼文討論。

參考

  • https://laravel.com/docs/5.4/...

  • http://php.net/manual/en/lang...

  • http://php.net/manual/en/func...

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板