欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何利用組件開發(fā)與composer構(gòu)建類Laravel框架-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)如何利用組件開發(fā)與composer構(gòu)建類Laravel框架,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)制作后付款的網(wǎng)站建設(shè)流程,更有儀隴免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

如今“敏捷開發(fā)”“不要重復(fù)造輪子”思想已經(jīng)在軟件開發(fā)方面盛行了。項(xiàng)目中以框架作為基礎(chǔ)進(jìn)行二次開發(fā)已經(jīng)成為了選方案。Laravel是一款優(yōu)秀的PHP框架,在眾多框架之中保持著一種領(lǐng)跑的姿態(tài)。Laravel比較突出的優(yōu)點(diǎn)是組件式開發(fā)、Ioc容器、分布式運(yùn)用架構(gòu)設(shè)計(jì)。而說(shuō)到PHP組件開發(fā)就不得不提到composer,composer是專門為PHP而生的,是PHP組件的管理工具。Laravel框架就是采用組件式開發(fā)的典范,稍后我將演示如何利用composer組件管理工具手動(dòng)構(gòu)建laravel主要功能,包括路由功能、控制器功能、模型、視圖。

那么什么是組件式開發(fā)?
按照我的理解是:對(duì)于一個(gè)大型項(xiàng)目來(lái)說(shuō),如果把各個(gè)功能在項(xiàng)目初期分為各個(gè)不同的版塊,最后在合成就是組件式開發(fā)。特別是在今天開源的社會(huì),很多人已經(jīng)把某個(gè)版塊(組件)做的很好了,那么我們就可以直接嵌入到項(xiàng)目中去(比如一些優(yōu)秀的類庫(kù))。甚至有時(shí)候我們可以快速更換項(xiàng)目中的模塊而不修改系統(tǒng)中的其他部分代碼。為了達(dá)到這個(gè)目的我們需要遵循一定得規(guī)范與接口。在PHP中有個(gè)著名的PHP-FIG(PHP Framework Interop Group,PHP 框架互動(dòng)群),它的作用就是制定一系列PHP開發(fā)規(guī)范即PSR編碼規(guī)范。PHPer在開發(fā)框架的時(shí)候共同遵守這個(gè)規(guī)則的話,各種組件就可以很友好地組合在一起。PSR主要包括PSR0-PSR4文檔,其中PSR0與PSR4就制定了Autoloader標(biāo)準(zhǔn)。

接下來(lái)手動(dòng)構(gòu)建Laravel框架中的路由功能、控制器功能、模型、視圖。

環(huán)境要求:
1、Composer(網(wǎng)上自行搜索安裝)
2、PHP5.3以上
3、Mysql數(shù)據(jù)庫(kù)
4、Apache或者Nginx服務(wù)器

步驟:
1、項(xiàng)目初始化
2、添加路由功能
3、添加控制器模塊
4、添加模型
5、添加視圖

1、項(xiàng)目初始化
在服務(wù)器根目錄創(chuàng)建一個(gè)文件夾,起名為lara,比如我的E:\laravel\lara(虛擬目錄),創(chuàng)建一個(gè)composer.json文件并輸入以下內(nèi)容(為了不重復(fù)用composer update,我將待會(huì)要用的組件一次性加載)

{
    "require":{
        "illuminate/routing":"*",
        "illuminate/events":"*",
        "illuminate/database":"*",
        "illuminate/view":"*"
    },
    "autoload":{
        "psr-4":{
            "App\\":"app/"
        }    }}

composer就是根據(jù)composer.json中的內(nèi)容來(lái)加載組件的。其中有路由組件、事件組件、數(shù)據(jù)庫(kù)組件、視圖組件(其中控制器組件已經(jīng)包括在路由組件)。autoload的配置為psr-4規(guī)范,也就是說(shuō)當(dāng)我們使用“$user =new \App\User()”實(shí)例化User對(duì)象時(shí),autoload會(huì)在app目錄下查找User.php文件。有了composer.json之后就可以加載組件了,在window下是用cmd定位到lara目錄然后使用composer update命令,在linux類似。在加載之后有如下目錄:
如何利用組件開發(fā)與composer構(gòu)建類Laravel框架

2、配置路由文件
我們都知道laravel有入口文件和路由文件。我就仿照l(shuí)aravel在lara目錄下新建一個(gè)public文件夾,在public目錄下創(chuàng)建一個(gè)入口文件index.php配置如下:

<?php 
    //調(diào)用自動(dòng)加載文件函數(shù)
    require  __DIR__.'/../vendor/autoload.php';
    //實(shí)例化服務(wù)器容器,框架的一些功能生成都需要服務(wù)容器來(lái)實(shí)現(xiàn),服務(wù)器容器來(lái)來(lái)服務(wù)注冊(cè)和解析,比如可以實(shí)現(xiàn)下面兩個(gè)服務(wù)的
    //注冊(cè)。注冊(cè)之后可以用$app['router']來(lái)調(diào)用服務(wù)。
    $app=new Illuminate\Container\Container;
    //setInstance將服務(wù)容器的實(shí)例添加為靜態(tài)屬性,這樣就可以在任何位置獲得服務(wù)器的實(shí)例。
    Illuminate\Container\Container::setInstance($app);
    //注冊(cè)時(shí)間和路由
    with(new Illuminate\Events\EventServiceProvider($app))->register();
    with(new Illuminate\Routing\RoutingServiceProvider($app))->register();
    //加載路由
    require __DIR__.'/../app/Http/Routes.php';
    //實(shí)例化請(qǐng)求分發(fā)處理程序
    $request =Illuminate\Http\Request::createFromGlobals();
    $response =$app['router']->dispatch($request);
    //返回請(qǐng)求的響應(yīng)
    $response->send();
 ?>

接下來(lái)設(shè)置路由文件。在lara目錄下創(chuàng)建app文件夾,在該目錄再創(chuàng)建一個(gè)Http文件夾,在Http目錄下創(chuàng)建一個(gè)routes.php文件。內(nèi)容如下(學(xué)過(guò)laravel框架的人應(yīng)該很清楚)

<?php 
    $app['router']->get('/',function(){
        return '<h2>路由成功!</h2>';
    });
    $app['router']->get('welcome','App\Http\Controllers\WelcomeController@index');
 ?>

接下來(lái)再通過(guò)服務(wù)器訪問(wèn)到public的index,結(jié)果如下:
如何利用組件開發(fā)與composer構(gòu)建類Laravel框架

3、配置控制器模塊
根據(jù)laravel目錄結(jié)構(gòu),在app\Http目錄下創(chuàng)建一個(gè)Controllers文件夾,然后創(chuàng)建一個(gè)WelcomeController.php文件,代碼如下:

<?php 
    namespace App\Http\Controllers;

    class WelcomeController
    {
        public function index(){
            return "控制器";
        }
    }
 ?>

然后再配置路由文件為:

<?php 
    $app['router']->get('/',function(){
        return '<h2>路由成功!</h2>';
    });
    $app['router']->get('welcome','App\Http\Controllers\WelcomeController@index');
 ?>

接下來(lái)再訪問(wèn)localhost:8080/lara/public/index.php/welcome(這是我的路徑,大家根據(jù)自己的服務(wù)器寫)結(jié)果;
如何利用組件開發(fā)與composer構(gòu)建類Laravel框架

4、配置模型
首先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)(我這里取名為lara),然后創(chuàng)建一個(gè)數(shù)據(jù)表students;
如何利用組件開發(fā)與composer構(gòu)建類Laravel框架再來(lái)配置database組件,在入口文件下配置,配置后為:

<?php 
    use Illuminate\Database\Capsule\Manager;

    //調(diào)用自動(dòng)加載文件函數(shù)
    require  __DIR__.'/../vendor/autoload.php';
    //實(shí)例化服務(wù)器容器,框架的一些功能生成都需要服務(wù)容器來(lái)實(shí)現(xiàn),服務(wù)器容器來(lái)來(lái)服務(wù)注冊(cè)和解析,比如可以實(shí)現(xiàn)下面兩個(gè)服務(wù)的
    //注冊(cè)。注冊(cè)之后可以用$app['router']來(lái)調(diào)用服務(wù)。
    $app=new Illuminate\Container\Container;
    //setInstance將服務(wù)容器的實(shí)例添加為靜態(tài)屬性,這樣就可以在任何位置獲得服務(wù)器的實(shí)例。
    Illuminate\Container\Container::setInstance($app);
    //注冊(cè)時(shí)間和路由
    with(new Illuminate\Events\EventServiceProvider($app))->register();
    with(new Illuminate\Routing\RoutingServiceProvider($app))->register();
    //加載路由
    //啟動(dòng)Eloquent ORM模塊并進(jìn)行相關(guān)配置
    $manager =new Manager();
    $manager->addConnection(require '../config/database.php');
    $manager->bootEloquent();

    require __DIR__.'/../app/Http/Routes.php';

    //實(shí)例化請(qǐng)求分發(fā)處理程序
    $request =Illuminate\Http\Request::createFromGlobals();
    $response =$app['router']->dispatch($request);
    //返回請(qǐng)求的響應(yīng)
    $response->send();
 ?>

然后配置數(shù)據(jù)庫(kù)連接,在lara目錄下創(chuàng)建config文件夾,然后創(chuàng)建database.php

<?php 
    return [
        'driver'    =>'mysql',
        'host'      =>'localhost',
        'database'  =>'lara',
        'username'  =>'root',
        'password'  =>'123',
        'charset'   =>'utf8',
        'collation' =>'utf8_general_ci',
        'prefix'    =>''
    ];
 ?>

大家根據(jù)自己的數(shù)據(jù)庫(kù)配置相關(guān)參數(shù)。
接下來(lái)就創(chuàng)建模板文件了,在app目錄下創(chuàng)建Models文件夾,再該目錄創(chuàng)建Student.php

<?php 
    namespace App\Models;
    use Illuminate\Database\Eloquent\Model;
    class Student extends model
    {
        //禁用createTime/updateTime;
        public $timestamps =  false;       
    }
 ?>

我沒(méi)有創(chuàng)建createTime和updateTime字段所以要設(shè)置$timestamps =  false;  
最后再使用Eloquent ORM利用模型,在WelcomeController.php文件中運(yùn)用該模型:WelcomeController.php

<?php 
    namespace App\Http\Controllers;
    use App\Models\Student;
    use Illuminate\Container\Container;
    class WelcomeController
    {
        public function index(){
            $student =Student::first();
            $data =$student->getAttributes();

            return $data['name'].";".$data['age'];
        }
    }
 ?>

再訪問(wèn)localhost:8080/lara/public/index.php/welcome
結(jié)果如下:
如何利用組件開發(fā)與composer構(gòu)建類Laravel框架
5、添加視圖組件
配置入口文件如下:

<?php 
    use Illuminate\Database\Capsule\Manager;
    use Illuminate\Support\Fluent;
    //調(diào)用自動(dòng)加載文件函數(shù)
    require  __DIR__.'/../vendor/autoload.php';
    //實(shí)例化服務(wù)器容器,框架的一些功能生成都需要服務(wù)容器來(lái)實(shí)現(xiàn),服務(wù)器容器來(lái)來(lái)服務(wù)注冊(cè)和解析,比如可以實(shí)現(xiàn)下面兩個(gè)服務(wù)的
    //注冊(cè)。注冊(cè)之后可以用$app['router']來(lái)調(diào)用服務(wù)。
    $app=new Illuminate\Container\Container;
    //setInstance將服務(wù)容器的實(shí)例添加為靜態(tài)屬性,這樣就可以在任何位置獲得服務(wù)器的實(shí)例。
    Illuminate\Container\Container::setInstance($app);
    //注冊(cè)時(shí)間和路由
    with(new Illuminate\Events\EventServiceProvider($app))->register();
    with(new Illuminate\Routing\RoutingServiceProvider($app))->register();
    //加載路由
    //啟動(dòng)Eloquent ORM模塊并進(jìn)行相關(guān)配置
    $manager =new Manager();
    $manager->addConnection(require '../config/database.php');
    $manager->bootEloquent();
    $app->instance('config',new Fluent);
    $app['config']['view.compiled'] = "E:\\laravel\\lara\\storage\\framework\\views\\";
    $app['config']['view.paths'] = ["E:\\laravel\\lara\\resources\\views\\"];
    with(new Illuminate\View\ViewServiceProvider($app))->register();
    with(new Illuminate\Filesystem\FilesystemServiceProvider($app))->register();
    require __DIR__.'/../app/Http/Routes.php';

    //實(shí)例化請(qǐng)求分發(fā)處理程序
    $request =Illuminate\Http\Request::createFromGlobals();
    $response =$app['router']->dispatch($request);
    //返回請(qǐng)求的響應(yīng)
    $response->send();
 ?>

其中的路徑根據(jù)自己電腦配置。
然后再分別創(chuàng)建lara\storage\framework\views\目錄,和E:\laravel\lara\resources\views目錄,分別存放編譯文件和模板文件。在WelcomeController.php配置使用視圖文件:

<?php 
    namespace App\Http\Controllers;
    use App\Models\Student;
    use Illuminate\Container\Container;
    class WelcomeController
    {
        public function index(){
            $student =Student::first();
            $data =$student->getAttributes();
            $app=Container::getInstance();
            $factory =$app->make('view');
            return $factory->make('welcome')->with('data',$data);
        }
    }
 ?>

讀取一行數(shù)據(jù)給視圖文件welcome
然后在lara\resources\views目錄下創(chuàng)建welcome.blade.php,注意后綴為.blade.php,否則無(wú)法識(shí)別。代碼如下:

{{ $data['name']}}{{ $data['age']}}

主要不要用php標(biāo)簽包圍該代碼
最后訪問(wèn)localhost:8080/lara/public/index.php/welcome
結(jié)果如下:
如何利用組件開發(fā)與composer構(gòu)建類Laravel框架


關(guān)于“如何利用組件開發(fā)與composer構(gòu)建類Laravel框架”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

當(dāng)前文章:如何利用組件開發(fā)與composer構(gòu)建類Laravel框架-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://chinadenli.net/article2/edsic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷定制網(wǎng)站網(wǎng)站制作定制開發(fā)品牌網(wǎng)站制作面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司