摘要:框架關(guān)鍵技術(shù)解析讀書(shū)筆記二第五章框架應(yīng)用程序根目錄版本默認(rèn)的框架應(yīng)用程序是符合規(guī)范的,所以相應(yīng)的目錄結(jié)構(gòu)也是基本固定的,不同的目錄加載了功能文件,如果添加了新的目錄,需要在文件中添加規(guī)范的自動(dòng)加載部分并執(zhí)行命令。
Laravel 框架關(guān)鍵技術(shù)解析·讀書(shū)筆記(二)
框架應(yīng)用程序根目錄(5.1版本)
默認(rèn)的Laravel框架應(yīng)用程序是符合PSR規(guī)范的,所以相應(yīng)的目錄結(jié)構(gòu)也是基本固定的,不同的目錄加載了功能文件,如果添加了新的目錄,需要在composer.json文件中添加PSR規(guī)范的自動(dòng)加載部分并執(zhí)行update命令。
App: 主要包括應(yīng)用程序的核心代碼,用戶(hù)構(gòu)建應(yīng)用的大部分工作都在app目錄下進(jìn)行,包括路由文件、控制文件、模型文件等。
bootstrap:主要包含幾個(gè)框架啟動(dòng)和自動(dòng)加載配置文件
config:主要包含應(yīng)用程序常用的配置文件信息
database:主要包含數(shù)據(jù)庫(kù)遷移和數(shù)據(jù)庫(kù)填充文件。
public :應(yīng)用程序的入口文件,包含應(yīng)用程序入口文件index.php,同時(shí)包含靜態(tài)資源文件如CSS,JavaScript,images等。
resource:主要包含視圖文件。
storage:包含編譯后的blade模板,基于文件的session,文件緩存和日志文件等。
tests:主要包含自動(dòng)化測(cè)試文件。
vendor:主要包含依賴(lài)庫(kù)文件,其中包括框架源代碼
.env:一個(gè)重要的文件,為L(zhǎng)aravel框架的主配置文件。
composer.json:composer項(xiàng)目依賴(lài)管理工具
app目錄
應(yīng)用程序的大部分內(nèi)容都存在于app目錄下,該目錄同樣通過(guò)composer使用自動(dòng)加載標(biāo)準(zhǔn)(PSR-4)來(lái)加載其中的文件,如果想改變目錄下的命名空間,可以使用artisan命令app:name完成,也可以直接修改composer.json文件實(shí)現(xiàn)。
console:主要包含所有的artisan命令
events:用來(lái)控制與事件相關(guān)的類(lèi)
exceptions:包含應(yīng)用程序的異常處理類(lèi),用于處理應(yīng)用程序拋出的任何異常
Http:主要包含路由文件、控制器文件、請(qǐng)求文件,中間文件等,是應(yīng)用程序與Laravel框架源代碼等外部庫(kù)交互的主要文件。
Jobs:主要包含消息隊(duì)列的各種消息類(lèi)文件
Listener:主要包含監(jiān)聽(tīng)事件類(lèi)文件。
Provider:主要包含服務(wù)提供者的相關(guān)文件。
vendor目錄
由一個(gè)個(gè)相互依賴(lài)的功能組件模塊組織起來(lái)的,可以獨(dú)立工作,也可以被組織起來(lái)協(xié)調(diào)工作。
composer:主要包含composer按照PSR規(guī)范生成的自動(dòng)加載類(lèi)。應(yīng)用程序的自動(dòng)加載都是由這部分實(shí)現(xiàn)的。
laravel:包含laravel框架源代碼,代碼部分都包含在vendorlaravelframeworksrcIlluminate文件中
symfony:laravel框架的底層(如請(qǐng)求類(lèi)、相應(yīng)類(lèi)、文件管理類(lèi))使用了symfony框架的部分,所以該目錄包含這部分內(nèi)容。
monolog:包括日志記錄模塊文件
phpunit:包含程序單元測(cè)試模塊文件
路由
可以理解為將路由設(shè)置的過(guò)程理解為微程序內(nèi)部定義了一個(gè)路由表,與網(wǎng)絡(luò)中使用的路由器一樣,也事先需要有一個(gè)路由表。當(dāng)不同的請(qǐng)求到來(lái)時(shí),根據(jù)路由表選擇不同的處理程序
基礎(chǔ)路由設(shè)置
基本路由是一個(gè)資源定位符(URL)對(duì)應(yīng)一個(gè)響應(yīng)程序,這個(gè)程序可以是一個(gè)閉包函數(shù),也可以是一個(gè)控制器響應(yīng)函數(shù)的標(biāo)識(shí)
具體格式:
Route::get("/",function () { return "Hello Laravel"; });
如果請(qǐng)求其他方法,則需要使用對(duì)應(yīng)的路由設(shè)置方法進(jìn)行定義,對(duì)應(yīng)的方法由get,post,put,delete等。
對(duì)于多種請(qǐng)求的路由定義,可以通過(guò)match和any方法實(shí)現(xiàn),
Route::match(["get","post"],"/",function () { return "Hello Laravel"; }); Route::any("home", function () { return "Hello Laravel"; });
路由參數(shù)
主要針對(duì)的是Get請(qǐng)求的情況
Route::get("資源標(biāo)識(shí)/{參數(shù)名}[?][/{參數(shù)名}……", "閉包函數(shù)或者控制器響應(yīng)函數(shù)標(biāo)識(shí)")[->where("參數(shù)名","正則表達(dá)式")]; Route::get("user/{id}",function ($id){ return "$id=" . $id; }); Route::get("user/{id}/{name}",function ($id, $name){ return "$id=" . $id . " and $name=" . $name; })->where(["id" => "[0-9]+", "name" => "[a-z]+"]);
控制器路由
基礎(chǔ)控制器路由
Route::get("home/{name}","HomeController@index");
- 隱式控制器路由 - RESTFul資源控制器路由
路由群組
路由命名
相當(dāng)于在路由定義時(shí)為路由起一個(gè)別名,以后可以使用別名來(lái)獲取路由的信息
?
控制器
視圖
視圖文件是以“.balde.php”后綴命名。
數(shù)據(jù)傳遞
數(shù)組方式
with函數(shù)
with加變量名方式
blade模板
@extends("布局文件名"):用于繼承一個(gè)布局文件
@section("區(qū)塊名"):用于定義一個(gè)區(qū)塊,可以有不同的結(jié)尾標(biāo)識(shí),@show用于顯示這個(gè)區(qū)塊,@stop和@endsection用于結(jié)束一個(gè)區(qū)塊,@overwirte用于重寫(xiě)前面的區(qū)塊
@parent:用于顯示繼承的布局模塊中的文件。
@yield("區(qū)塊文件",’默認(rèn)文件‘):用于定義在布局文件中定義一個(gè)區(qū)塊
@include("子視圖文件名稱(chēng)"):用于在視圖文件中加載視圖文件。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/28657.html
摘要:判斷是否存在構(gòu)造函數(shù),不存在直接實(shí)例化,存在則通過(guò)來(lái)獲取輸入函數(shù),并有相應(yīng)的方法解決依賴(lài)參數(shù)問(wèn)題,實(shí)現(xiàn)依賴(lài)注入。 Laravel 框架關(guān)鍵技術(shù)解析·讀書(shū)筆記(一) 第一章 入口文件 請(qǐng)求訪問(wèn)的入口文件,主要完成幾部分工作,分別是: 自動(dòng)加載函數(shù)的添加 服務(wù)器實(shí)例化與服務(wù)注冊(cè) 路由加載 請(qǐng)求實(shí)例化與路由分發(fā) 相應(yīng)生成與發(fā)送 其中,自動(dòng)加載函數(shù)用于包含引用文件,改文件是composer...
摘要:裝飾者模式是在開(kāi)放關(guān)閉原則下實(shí)現(xiàn)動(dòng)態(tài)添加或減少功能提高程序的擴(kuò)展性詳細(xì)介紹注本文可以作為學(xué)習(xí)裝飾者模式的基礎(chǔ)篇但是我個(gè)人更建議配套裝飾者模式來(lái)學(xué)習(xí)效果更佳本文中的例子是由框架關(guān)鍵技術(shù)解析中摘抄的。 裝飾者模式:是在開(kāi)放-關(guān)閉原則下實(shí)現(xiàn)動(dòng)態(tài)添加或減少功能,提高程序的擴(kuò)展性.詳細(xì)介紹注: 本文可以作為學(xué)習(xí)裝飾者模式的基礎(chǔ)篇,但是我個(gè)人更建議配套Decorator Pattern With...
摘要:裝飾對(duì)象包含一個(gè)真實(shí)對(duì)象的引用裝飾對(duì)象接受所有來(lái)自客戶(hù)端的請(qǐng)求。裝飾對(duì)象可以在轉(zhuǎn)發(fā)這些請(qǐng)求以前或以后增加一些附加功能。在面向?qū)ο蟮脑O(shè)計(jì)中,通常是通過(guò)繼承來(lái)實(shí)現(xiàn)對(duì)給定類(lèi)的功能擴(kuò)展。 Decorator Pattern 裝飾者模式 綱要: 1. 一個(gè)初學(xué)者的疑惑 2. 裝飾者模式的特點(diǎn) 3. 簡(jiǎn)單case掌握裝飾者模式 4. laravel中裝飾者模式的應(yīng)用 Con...
摘要:然后中間件使用方法來(lái)啟動(dòng)獲取實(shí)例,使用類(lèi)來(lái)管理主要分為兩步獲取實(shí)例,主要步驟是通過(guò)該實(shí)例從存儲(chǔ)介質(zhì)中讀取該次請(qǐng)求所需要的數(shù)據(jù),主要步驟是。 說(shuō)明:本文主要通過(guò)學(xué)習(xí)Laravel的session源碼學(xué)習(xí)Laravel是如何設(shè)計(jì)session的,將自己的學(xué)習(xí)心得分享出來(lái),希望對(duì)別人有所幫助。Laravel在web middleware中定義了session中間件IlluminateSess...
摘要:劃下重點(diǎn),服務(wù)容器是用于管理類(lèi)的依賴(lài)和執(zhí)行依賴(lài)注入的工具。類(lèi)的實(shí)例化及其依賴(lài)的注入,完全由服務(wù)容器自動(dòng)的去完成。 本文首發(fā)于 深入剖析 Laravel 服務(wù)容器,轉(zhuǎn)載請(qǐng)注明出處。喜歡的朋友不要吝嗇你們的贊同,謝謝。 之前在 深度挖掘 Laravel 生命周期 一文中,我們有去探究 Laravel 究竟是如何接收 HTTP 請(qǐng)求,又是如何生成響應(yīng)并最終呈現(xiàn)給用戶(hù)的工作原理。 本章將帶領(lǐng)大...
閱讀 2194·2023-04-25 15:24
閱讀 1656·2019-08-30 12:55
閱讀 1672·2019-08-29 15:27
閱讀 550·2019-08-26 17:04
閱讀 2494·2019-08-26 10:59
閱讀 1868·2019-08-26 10:44
閱讀 2262·2019-08-22 16:15
閱讀 2669·2019-08-22 15:36