久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      laravel的核心是什么

      laravel的核心是服務(wù)容器,也就是IOC容器。該容器提供了整個(gè)框架中需要的一系列服務(wù),其中包含了依賴注入和控制反轉(zhuǎn)兩部分,控制反轉(zhuǎn)是面向?qū)ο缶幊讨械囊环N設(shè)計(jì)原則,可以用來減低計(jì)算機(jī)代碼之間的耦合度。

      laravel的核心是什么

      本文操作環(huán)境:Windows10系統(tǒng)、Laravel6版、Dell G3電腦。

      laravel的核心是什么

      服務(wù)容器,也叫IOC容器,其實(shí)包含了依賴注入(DI)和控制反轉(zhuǎn)(IOC)兩部分,是laravel的真正核心。其他的各種功能模塊比如 Route(路由)、Eloquent ORM(數(shù)據(jù)庫 ORM 組件)、Request and Response(請求和響應(yīng))等等等等,實(shí)際上都是與核心無關(guān)的類模塊提供的,這些類從注冊到實(shí)例化,最終被你所使用,其實(shí)都是 laravel 的服務(wù)容器負(fù)責(zé)的。服務(wù)容器這個(gè)概念比較難解釋清楚,只能一步步從服務(wù)容器的產(chǎn)生歷史慢慢解釋

      該容器提供了整個(gè)框架中需要的一系列服務(wù)。

      IoC 容器誕生的故事——石器時(shí)代(原始模式)

      我們把一個(gè)“超人”作為一個(gè)類,

      class Superman {}

      我們可以想象,一個(gè)超人誕生的時(shí)候肯定擁有至少一個(gè)超能力,這個(gè)超能力也可以抽象為一個(gè)對象,為這個(gè)對象定義一個(gè)描述他的類吧。一個(gè)超能力肯定有多種屬性、(操作)方法,這個(gè)盡情的想象,但是目前我們先大致定義一個(gè)只有屬性的“超能力”,至于能干啥,我們以后再豐富:

      class Power {     /**      * 能力值      */     protected $ability;     /**      * 能力范圍或距離      */     protected $range;     public function __construct($ability, $range)     {         $this->ability = $ability;         $this->range = $range;     } }

      這時(shí)候我們回過頭,修改一下之前的“超人”類,讓一個(gè)“超人”創(chuàng)建的時(shí)候被賦予一個(gè)超能力:

      class Superman {     protected $power;     public function __construct()     {         $this->power = new Power(999, 100);     } }

      這樣的話,當(dāng)我們創(chuàng)建一個(gè)“超人”實(shí)例的時(shí)候,同時(shí)也創(chuàng)建了一個(gè)“超能力”的實(shí)例,但是,我們看到了一點(diǎn),“超人”和“超能力”之間不可避免的產(chǎn)生了一個(gè)依賴。

      所謂“依賴”,就是“我若依賴你,少了你就沒有我”。

      在一個(gè)貫徹面向?qū)ο缶幊痰捻?xiàng)目中,這樣的依賴隨處可見。少量的依賴并不會有太過直觀的影響,我們隨著這個(gè)例子逐漸鋪開,讓大家慢慢意識到,當(dāng)依賴達(dá)到一個(gè)量級時(shí),是怎樣一番噩夢般的體驗(yàn)。當(dāng)然,我也會自然而然的講述如何解決問題。

      之前的例子中,超能力類實(shí)例化后是一個(gè)具體的超能力,但是我們知道,超人的超能力是多元化的,每種超能力的方法、屬性都有不小的差異,沒法通過一種類描述完全。我們現(xiàn)在進(jìn)行修改,我們假設(shè)超人可以有以下多種超能力:

      飛行,屬性有:飛行速度、持續(xù)飛行時(shí)間

      蠻力,屬性有:力量值

      能量彈,屬性有:傷害值、射擊距離、同時(shí)射擊個(gè)數(shù)

      我們創(chuàng)建了如下類:

      class Flight {     protected $speed;     protected $holdtime;     public function __construct($speed, $holdtime) {} } class Force {     protected $force;     public function __construct($force) {} } class Shot {     protected $atk;     protected $range;     protected $limit;     public function __construct($atk, $range, $limit) {} }

      好了,這下我們的超人有點(diǎn)“忙”了。在超人初始化的時(shí)候,我們會根據(jù)需要來實(shí)例化其擁有的超能力嗎,大致如下:

      class Superman {     protected $power;     public function __construct()     {         $this->power = new Fight(9, 100);         // $this->power = new Force(45);         // $this->power = new Shot(99, 50, 2);         /*         $this->power = array(             new Force(45),             new Shot(99, 50, 2)         );         */     } }

      我們需要自己手動的在構(gòu)造函數(shù)內(nèi)(或者其他方法里)實(shí)例化一系列需要的類,這樣并不好??梢韵胂?,假如需求變更(不同的怪物橫行地球),需要

      贊(1)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號