摘要:在每一個的項目主頁上,展示了擴展包的介紹版本號倉庫地址如完整的文件,以及其他一些有用的信息。官方文檔給出了總結(jié)服務提供者是所有應用程序引導中心。你可以瀏覽位于目錄下的所有應用程序服務提供者。
當你接手一個新項目的時候,可能會感到無從下手,如果不熟悉編程,則更是如此。那么,我們該從哪兒入手呢?項目代碼的哪些部分我們需要著重了解?下面我們看看 Laravel 項目的幾個通用的部分。
項目文檔面對新項目時,文檔可能是最有幫助的。如果項目包含文檔,恭喜你,你非常幸運。但是,也別高興地太早,因為文檔可能早已經(jīng)過時或覆蓋不全面。項目文檔通常編寫在 readme 文件中、wiki,或者發(fā)布在 Confluence 和 Google Docs 之類共享平臺上。如果你基于一個項目做開發(fā),不要猶如,請積極的為項目文檔做貢獻:補充空白部分或者使其表達得更清晰明了。
如果你不夠幸運的話(大多數(shù)時候都是如此),你接觸的項目沒有任何文檔。缺少文檔并不完全是一件壞事,因為在這種情況下,你有機會親自為你的團隊撰寫文檔。你和你的同事,以及你帶來的新開發(fā)者,都將會在未來對你感激不盡。
撰寫文檔確實不是一件有趣的工作,但它對于保持項目的長期運行是很有必要的。項目文檔不僅要列舉使用的技術(shù)和初始安裝方法,同時也應該闡述項目 “為什么這樣” 以及 “如何進行” ,這通常不能清晰地用代碼自身表達出來。某些高層次的設計選擇及其原因也應該被寫入文檔,以幫助更好地理解代碼。
composer.jsonComposer?是一個 PHP 包管理工具,在過去的幾年中幫助推動了 PHP 生態(tài)系統(tǒng)的快速前進。 Laravel 從版本4開始使用 Composer ,所以在項目基本都存在 composer.json 文件。你能夠在項目根目錄下找到 composer.json 文件和 composer.lock 文件。
lock 文件包含了項目中所需要的所有依賴包的準確版本,而 JSON 文件顯示了依賴包的發(fā)布內(nèi)容。目前,我們只對 JSON 文件中的版本信息感興趣,如果你想學習這些文件的更多知識,可以閱讀 這里。
在瀏覽 composer.json 文件時,注意到有一個 require 區(qū)塊,看起來內(nèi)容類似如下所示。
{ "require": { "php": ">=7.1.3", "fideloper/proxy": "~4.0", "laravel/framework": "5.6.*", "laravel/tinker": "~1.0" } }
在這個樣例中,我們有一個基于 Laravel 5.6 的項目。它同時依賴于另外兩個包,以及不低于7.1.3版本的 PHP 。在你的項目中,你很可能會看到更多依賴包,并且版本號可能會有所變化。
現(xiàn)在你知道了項目中依賴了哪些擴展包,去搞明白它們各自的功能。我推薦從 Laravel 依賴開始,因為它們擁有詳細的文檔。且文檔就發(fā)布在網(wǎng)絡上,很容易就能找到:https://laravel.com/docs/{VERSION}?和?https://laravel.com/api/{VERSION},如下這種鏈接 https://laravel.com/docs/5.6>...。
文檔?docs?對 laravel 功能及各個主要部分的工作原理作了比較全面的介紹。同時 ?api 文檔將 laravel 框架中所用到的類及方法以清單的形式呈現(xiàn)出來。
在查看了 Laravel 文檔之后,可以繼續(xù)查看其它依賴的文檔。你可以前往 Packagist?(這是 Composer 所使用的擴展包倉庫)獲取關(guān)于依賴的更多信息,各擴展對應的地址為https://packagist.org/packages/{VENDOR}/{PACKAGE},比如 https://packagist.org/package...。
在每一個 Packagist 的項目主頁上,展示了擴展包的介紹、版本號、倉庫地址(如 GitHub)、完整的 readme?文件,以及其他一些有用的信息。從項目主頁上獲得的信息足夠使你了解這個擴展包是什么,在你的項目中又承擔哪部分功能。通過這種方式,繼續(xù)去了解你項目應用的 composer.json? 文件中所羅列出的其他依賴。
路由路由是應用某個具體功能的入口。路由表現(xiàn)為一個鏈接,瀏覽器訪問鏈接時,最終由綁定的控制器或閉包來處理。由路由找到具體對應的控制器,就能清楚控制器所依賴的其他模塊以及實現(xiàn)的具體功能。遇到新的路由,繼續(xù)重復這一動作,就能逐步搞清楚整個應用是怎么工作的。
你可以在項目的如下位置找到路由配置文件:
Laravel 5.3+?routes/*.php
Laravel 5.0-5.2?app/Http/routes.php
Laravel 4.2?app/routes.php
路由 "陷阱"某些時候,根據(jù)具體 URL 定位路由需要費些腦子。
比如 URI?/users/123/profile。你可能想要去搜索?users/{id}/profile 的路由定義。事實上,它是定義在?路由分組?中,這使得路由比較難定位。
Route::prefix("users")->group(function () { Route::get("{id}/profile", "UsersController@profile"); });
在這個例子中,users?和?{id}/profile?并沒有被寫在一起,這是難以定位的原因。如果路由不多,還能比較輕易的找出。但是,當路由文件有成百上千條定義時,這將會變得非常困難。
另外一個坑是?Route::resource()?(還有新版本中的?Route::apiResource())。
Route::resource() 將自動根據(jù)指定參數(shù)生成路由。舉個例子,在路由文件中添加代碼 Route::resource("dogs", "DogController"); 將完成與下述代碼相同的功能。
Route::group(["prefix" => "dogs"], function () { Route::get("/", "DogsController@index")->name("dogs.index"); Route::get("create", "DogsController@create")->name("dogs.create"); Route::post("/", "DogsController@store")->name("dogs.store"); Route::get("{id}", "DogsController@show")->name("dogs.show"); Route::get("{id}/edit", "DogsController@edit")->name("dogs.edit"); Route::put("{id}", "DogsController@update")->name("dogs.update"); Route::delete("{id}", "DogsController@destroy")->name("dogs.destroy"); });
然而,如果你嘗試查找類似 dogs/{id}/edit 的內(nèi)容,這是找不到的,因為它的定義是作為 Route::resource() 的其中一部分。
有時通過 Route::resource() 方式直接定義路由是挺方便的,但我更傾向于多帶帶地定義每一個路由,這樣能使每個 URI 更容易被直接搜索到。了解更多路由資源和資源控制器的相關(guān)信息,可以查閱這些 文檔 。
預覽項目中的所有路由的最簡單方式是使用 artisan 命令 route:list :
php artisan route:list
route:list 命令提供了每個路由的完整細節(jié),包括 HTTP 請求方式,具體的 URI ,路由名稱,動作信息(也就是控制器及其方法),以及為每個路由配置的中間件信息。
服務提供者服務提供者是 Laravel 釋放魔法之地。 官方文檔 給出了總結(jié):
服務提供者是所有 Laravel 應用程序引導中心。你的應用程序以及 Laravel 的所有核心服務都是通過服務提供器進行引導。在這里,我們說的「引導」其實是指注冊,比如注冊服務容器綁定、事件監(jiān)聽器、中間件,甚至是路由的注冊。服務提供者是配置你應用程序的中心。
你可以瀏覽位于 app/providers 目錄下的所有應用程序服務提供者。圍繞應用自定義增加的相關(guān)代碼,理應在這里。例如,一些情況下要查找視圖合成器,宏,并做配置調(diào)整。
在舊版本的 Laravel 中,如 4.2,你會在 global.php 文件中發(fā)現(xiàn)類似的功能,因為那時服務提供者通常只在包中使用。
測試代碼庫包含的測試套件能向你展示應用程序如何工作以及接下來的響應。對應用的邊界處理情況,它可以提供有價值的線索。當然,就像代碼庫文檔一樣,應用配套的測試文件有可能不存在,或者很少,甚至是無用的過時文件。
同寫項目文檔一樣,寫應用配套測試同樣可以更好的學習項目應用,提升代碼質(zhì)量。你可能偶然發(fā)現(xiàn)并修復一些缺陷,移除無用的代碼,或者為項目中重要的類新增測試覆蓋。
利器對 Laravel 開發(fā)者而言,Barry vd. Heuvel 發(fā)布的 Laravel Debugbar 是值得擁有的調(diào)試和追溯工具。它功能強大,安裝便易。可以將應用程序中所發(fā)生的事情一覽無余:經(jīng)過的路由和控制器,數(shù)據(jù)庫查詢和執(zhí)行時間,數(shù)據(jù)展示,異常,查看執(zhí)行內(nèi)容和執(zhí)行過程時間線等等。嘗試過使用這個包后,你將在之后的 Laravel 應用開發(fā)中對它愛不釋手。
尾聲在這篇文章中,我提出了一些方法,方便你很快上手新的 Laravel 項目代碼。這篇文章并非一份包含所有細節(jié)的清單,只是一個起步。我鼓勵你使用這些建議,看看它能把你帶到哪里。如果您有任何交流的想法,我很樂意聽到它們!歡迎隨時聯(lián)系?Twitter。
轉(zhuǎn)自 PHP / Laravel 開發(fā)者社區(qū) https://laravel-china.org/top...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/29987.html
摘要:在每一個的項目主頁上,展示了擴展包的介紹版本號倉庫地址如完整的文件,以及其他一些有用的信息。官方文檔給出了總結(jié)服務提供者是所有應用程序引導中心。你可以瀏覽位于目錄下的所有應用程序服務提供者。 showImg(https://segmentfault.com/img/bV6vPF?w=1200&h=500); 當你接手一個新項目的時候,可能會感到無從下手,如果不熟悉編程,則更是如此。那么...
摘要:用也有三四個月了,雖然是兼職開發(fā),但是使用的頻率非常之高,畢竟是產(chǎn)品化的一個項目。第二階段數(shù)據(jù)庫和開發(fā)了比較多的功能之后,會發(fā)現(xiàn)需要大量的測試數(shù)據(jù),這時候和就該大顯身手了。 用Laravel也有三四個月了,雖然是兼職開發(fā),但是使用的頻率非常之高,畢竟是產(chǎn)品化的一個項目。在這期間,也踩了無數(shù)的坑,走了很多彎路,所以準備把最近的感悟記錄下來,方便后來者。 第一階段:簡單的增刪改查 這是最...
摘要:前言年底了不太忙,最近一段時間也一直在研究,就想寫篇關(guān)于比較深一點的教程系列啥的,于是就找到站長給開了寫教程的渠道。優(yōu)點的就是為藝術(shù)家創(chuàng)造的框架,它也是工程化的趨勢。項目維護方便也是事實。如果有遇到問題可以直接在教程下面留言。 前言 年底了不太忙,最近一段時間也一直在研究laravel,就想寫篇關(guān)于laravel比較深一點的教程系列啥的,于是就找到站長給開了寫教程的渠道。由于第一次寫,...
摘要:謹記,請勿犯這樣的錯誤。由于在之前的教程中,積累了堅實的基礎(chǔ)。其實,這是有緣由的其復雜度在早期的學習過程中,將會帶來災難性的影響。該如何應對對于來說,雖然有大量的學習計劃需要采取,且有大量的東西需要學習。 前言倘若你正在建造一間房子,那么為了能快點完成,你是否會跳過建造過程中的部分步驟?如在具體建設前先鋪設好部分石頭?或直接在一塊裸露的土地上先建立起墻面? 又假如你是在堆砌一個結(jié)婚蛋糕...
閱讀 3170·2021-09-10 10:51
閱讀 3351·2021-08-31 09:38
閱讀 1639·2019-08-30 15:54
閱讀 3129·2019-08-29 17:22
閱讀 3214·2019-08-26 13:53
閱讀 1960·2019-08-26 11:59
閱讀 3283·2019-08-26 11:37
閱讀 3308·2019-08-26 10:47