真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么用PHP特性trait實(shí)現(xiàn)簡(jiǎn)易LaravelFacade

今天小編給大家分享一下怎么用PHP特性trait實(shí)現(xiàn)簡(jiǎn)易Laravel Facade的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。                           

沅江網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,沅江網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為沅江上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的沅江做網(wǎng)站的公司定做!

簡(jiǎn)述

Facade 可以有效幫我實(shí)現(xiàn)方法的靜態(tài)化。Laravel 大部分的擴(kuò)展包都使用了 Facade。
下面的簡(jiǎn)易 Facade 主要是利用 PHP 的特性 trait,魔術(shù)方法 __callStatic,反射類 ReflectionClass

使用場(chǎng)景

后臺(tái)系統(tǒng)大部分都會(huì)有類似這樣的操作:

這樣似乎沒有什么問題,但是還會(huì)存在下面這樣的:

$article = Article::find($id);if (!$article) {
    throw new \Expection("資源不存在");}$article->delete();

這樣寫法十分不優(yōu)雅。

上代碼

1、首先我們應(yīng)該要有一個(gè) Service

2、新建一個(gè) Trait

trait 為了多繼承而存在的,可以去 PHP官網(wǎng) 看文檔。

newInstanceArgs();

        // 調(diào)用該不存在的方法
        $model = call_user_func_array([$instance, $method], [$arg]);

        // 如果存在復(fù)雜操作交給 callback
        return isset($args[2]) ? $args[2]($model) : self::callback($model, $method);
    }}

首先我們關(guān)注 __callStatic 這個(gè)魔術(shù)方法。 當(dāng)調(diào)用不存在的靜態(tài)方法時(shí)會(huì)觸發(fā)該方法。和他相似的魔術(shù)方法是 __call。這是使用 __callStatic 是為了達(dá)到 Facade 的效果。

__callStatic 有兩個(gè)回調(diào)參數(shù) $method被調(diào)用的且不存在的方法,$args$method 方法中所傳遞的參數(shù)(數(shù)組形式)。

這樣一個(gè)簡(jiǎn)易的 trait 就完成了。

使用

我們新建一個(gè) command

$ php artisan make:command TestCommand

寫入下面的內(nèi)容

load('author');
        });
    }}

其中的 Article 模型需要自己去創(chuàng)建。
接下來(lái)就可以看看效果了:

$ php artisan test:test

以上就是“怎么用PHP特性trait實(shí)現(xiàn)簡(jiǎn)易Laravel Facade”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前名稱:怎么用PHP特性trait實(shí)現(xiàn)簡(jiǎn)易LaravelFacade
新聞來(lái)源:http://weahome.cn/article/goeosc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部