創建並運行一個新的 Laravel 項目

2021-03-02 xueyuanjun

經過 PHP 入門到實戰系列的基礎學習,接下來我們就可以正式開始 Laravel 框架的學習和使用了。而這一切都需要從創建一個新的 Laravel 項目開始。

註:本系列教程基於 Laravel 5.7+

1、創建一個新的 Laravel 項目

正如官方文檔所言,有兩種方式可以創建一個新的 Laravel 項目,這兩種創建方式都是從命令行執行的:第一種是通過全局的 Laravel 安裝器,另一種是通過 Composer 的 create-project 命令。

推薦使用第一種方式,比較簡單,而執行這兩種方式之前,都需要系統已經安裝過 PHP 和 Composer(如果使用 Valet 或 Laragon 的話,則應該已經安裝過了,如果使用的是 Homestead 或 Laradock 的話,宿主環境也要安裝下,便於後續操作,如果未曾安裝,請參考 Valet 和 Laragon 安裝教程)。

使用 Laravel 安裝器安裝

安裝 Laravel 安裝器很簡單,在命令行執行以下命令即可(如果已經安裝過,會自動進行更新):

composer global require laravel/installer 

安裝完成後,後續就可以通過 laravel new [項目名稱] 來創建新的 Laravel 項目了:

laravel new blog

該命令會在當前目錄下創建一個新的名為 blog 的應用:

使用 Composer create-project 命令安裝

除此之外,還可以通過 Composer 自帶的 create-project 命令來安裝新應用:

composer create-project laravel/laravel blog --prefer-dist

效果和上面使用安裝器安裝的一樣,使用這個方式安裝的一個好處是可以安裝舊版本的 Laravel 項目,比如要安裝 5.6 版本的項目 blog56 ,可以這麼做:

composer create-project laravel/laravel blog56 5.6.* --prefer-dist

2、Laravel 應用的目錄結構

安裝完成後,我們來看一下新安裝 Laravel 項目 blog 的目錄結構:

目錄

根目錄默認包含以下一級子目錄:

app:存放應用核心代碼,如模型、控制器、命令、服務等

bootstrap:存放 Laravel 框架每次啟動時用到的文件

config:用於存放項目所有配置文件

database:存放資料庫遷移和填充類文件

public:Web 應用入口目錄,用於存放入口文件 index.php 及前端資源文件(CSS、JS、圖片等)

resources:用於存放與非 PHP 資源文件,如視圖模板、語言文件、待編譯的 Vue 模板、Sass、JS 源文件

routes:項目的所有路由文件都定義在這裡

storage:用於存放緩存、日誌、上傳文件、已經編譯過的視圖模板等

tests:存放單元測試及功能測試代碼

vendor:通過 Composer 安裝的依賴包都存放在這裡,通常該目錄會放到 .gitignore 文件裡以排除到版本控制系統之外

註:更多關於目錄結構的信息,可參考官方文檔。

文件

.env.example/.env:用於配置環境變量,.env.example 是一個示例模板,而 .env 是真正的配置文件,由於包含敏感信息,通常也將其放到 .gitignore 文件中。

artisan:允許你在項目根目錄下通過 php artisan 執行 Artisan 命令

.gitignore 和 .gitattributes:Git 配置文件

composer.json 和 composer.lock:Composer 配置文件

webpack.mix.js:Laravel Mix Webpack 配置文件,用於編譯和打包前端資源

package.json:配置前端資源依賴和腳本(類似於 composer.json 之於 PHP)

phpunit.xml:PHPUnit 配置文件

server.php:用於通過 php artisan serve 啟動 PHP 內置伺服器進行一些簡單的本地預覽

yarn.lock:類似於 composer.lock 之於 Composer,指定 NPM 包版本

.editorconfig:用於在不同 IDE 或編輯器中維護代碼風格的一致性

3、配置

Laravel 應用的一些核心配置,比如資料庫、隊列、郵件等,都位於 config 目錄下,通過配置文件名稱就可以很直觀地甄別出不同的服務配置。這些配置文件都會返回一個數組,數組中的每個值都可以通過配置鍵獲取(配置鍵以配置文件名為前綴,以「.」號分隔數組層級),例如,如果你在 config/services.php 中定義了如下配置:

// config/services.php 
return [
    'sparkpost' => [
        'secret' => env('SPARKPOST_SECRET'),
    ],
];

然後,你就可以通過 config('services.sparkpost.secret') 來訪問配置值。

如上例所示,所有的因環境而異的變量配置值(尤其是敏感信息)都應該存放到根目錄下的 .env 環境變量文件中:

SPARKPOST_SECRET = xyj_laravelacademy.org

然後在配置文件中通過 env() 輔助函數傳入鍵名 SPARKPOST_SECRET 來獲取,這樣做有兩個好處:一是將敏感信息存放到版本控制系統(如 Git、Svn)之外,提高了系統的安全性;此外還可以方便我們在不同環境中(每個環境有自己獨立的 .env 文件)使用不同的配置值,提高了代碼的復用性和靈活性。

註:更多配置信息請參考官方文檔。

4、運行

安裝好 Laravel 項目,了解了目錄結構及其作用,以及如何對項目進行配置後,我們就可以運行這個應用了,啟動方式因開發環境而異,我們在前面的 Homestead、Laradock、Valet 以及 Laragon 中已經分別演示過了,這裡不再贅述,我們以 Laradock 為例,通過配置項目域名為 blog.test,在瀏覽器中訪問 http://blog.test,即可看到應用首頁:

我會將本系列教程代碼提交到 Github 倉庫:https://github.com/nonfu/laravel-tutorial-code,以下是關聯本地分支到 Github 項目主幹並第一次提交代碼的示例操作:

cd blog
git init
git remote add origin https://github.com/nonfu/laravel-tutorial-code
git add .
git commit -m '新建一個Laravel項目'
git branch --set-upstream-to=origin/master master
git pull origin master --allow-unrelated-histories
git push

這樣,就可以在 Github 上看到剛剛提交的代碼了:

5、測試

Laravel 開箱提供了基於 PHPUnit 進行單元測試和功能測試的功能,並且為我們做好了基礎配置(phpunit.xml)和示例代碼(位於 tests 目錄下),由於本節並沒有編寫任何代碼,所以可以通過以下命令運行示例測試:

./vendor/bin/phpunit 

測試結果通過:

註:我們後續教程將以這篇教程創建的 blog 項目為基礎,且訪問域名為 http://blog.test,後面不再重複聲明這一點。

(全文完)

長按下面的二維碼,即可訂閱學院君最新發布的 Laravel 入門系列教程:

關於本系列教程的更多動態,請點擊頁面左下角的「閱讀原文」連結查看。

相關焦點

  • 創建Laravel自定義Helper輔助方法
    Laravel中的Helper方法是用來創建自定義的方法,也稱為輔助方法。在之前我不太熱衷於創建自定義函數,隨著時間流轉,我開始越來越頻繁的使用它們。創建自定義輔助方法在Laravel中,在app目錄中創建一個文件,然後通過composer讓應用程式啟動時自動加載。創建自定義輔助方法並非易事,在我的經驗中,將功能放在Helps.php中,然後將該文件放在app/Utils下,實用程序工具類,你可以根據自身情況在app中任何目錄都可以。
  • 在laravel中怎樣創建視圖和模型?
    在上一篇文章中,我們介紹了在laravel中如何創建控制器,實現了MVC模型三部曲的第一步,今天我們來學習第二步和第三步——創建視圖和模型。一、模型的創建在MVC中,模型一般都是用來做數據處理的,在laravel中模型是直接放在App目錄下的,所以在模型中,命名空間就直接這樣寫:namespace App;在APP目錄下,我們直接新建一個php文件,模型的命名直接寫:名字+「.php」;例如:
  • laravel 基礎面試題-偏交談-2020-12-25-laravel-命令行工具artisan與tinker
    那麼接下來,我們就講講 laravel 中 封裝的 php cli 運行工具,artisan 以及 tinker。1. 請談談 PHP artisan是什麼Artisan 是 Laravel 自帶的命令行接口,有什麼用它提供了相當多的命令來幫助你構建 Laravel 應用。
  • 特務Q:laravel與swoole優雅的結合
    laravel與swoole作為當下各自兩個方向的金字塔頂端的工程,有點誇大,仁者見仁。它們好比倚天劍屠龍刀,我們期望它們的結合,誕生一門強大的功法。讓我們可以更方便開發,下面來說說它們如何優雅的結合。你需要在你伺服器上面安裝php的swoole擴展。
  • 安裝laravel,最靠譜的方法,利用composer安裝
    laravel框架是一款應用於web的php框架,這個框架因其非常優雅,簡潔方便使用而備受眾多開發者所使用,那麼今天我們就來介紹一下laravel這框框架在windows平臺怎樣進行安裝。二、安裝laravel安裝好composer之後,lavarel安裝就變得比較簡單了,在命令行中進入我們本地的項目文件夾,然後輸入命令composer create-project --prefer-dist laravel/laravel,按下回車鍵,就開始安裝laravel,安裝過程需要等待一些時間,安裝完成會有相應的提示。
  • Laravel 5.4 正式發布,PHP 開發框架 - OSCHINA - 中文開源技術...
    Dusk 能模擬瀏覽器的運行環境。它的目的是提供正確的方式進行頁面交互測試,所以可以使用 Dusk 去點擊按鈕或者連結、填寫表單、甚至拖放。Dusk 利用 ChromeDriver 和 Facebook PHP-webdriver 進行接口測試。
  • Laravel學習:服務容器綁定與解析
    Laravel 本身採取的第一個動作是創建一個 application/ service container 的實例。$app = new Illuminate\Foundation\Application(    dirname(__DIR__));  這個文件在每一次請求到達laravel框架都會執行,所創建的$app即是laravel框架的應用程式實例,它在整個請求生命周期都是唯一的。
  • PHP(Laravel)用戶註冊、登錄和退出
    實現用戶登陸註冊在其他的 PHP 框架中,如果要實現登陸註冊、表單驗證、記住密碼、多次登陸鎖定帳戶、發郵件重置密碼這一系列功能,這是一個非常繁瑣的事情,就算是非常有經驗的老手,實現起來也需要花費不少功夫,想想都很頭疼。那麼這些功能,在 laravel 中實現,需要多久呢?
  • laravel應用 之多個路由文件配置
    很多php開發者或者新近開發者,在一開始使用或學習laravel框架的時候,肯定會默認把所有的路由寫在 route/web.php中。然而這樣會有一個問題,就是那麼多的路由寫在這樣一個文件中,會顯得很多很冗雜,當然了小編一開始也是這樣寫的,不過經過多方查找和實驗,小編無意間看到 laravel 的路由還可以這樣配置。
  • 完結篇:91 個常見的 Laravel 面試題和答案(三)
    要創建與資料庫的連接,可以使用.env 文件。 53) 什麼是 Eloquent?Eloquent 是 在 laravel 中使用的 ORM 。它提供了簡單的 active record 實現, 配合資料庫使用。每個資料庫表都有其模型,該模型用於與表進行交互。
  • laravel框架實戰,資料庫的增刪改查,facade的使用
    laravel框架實戰,資料庫的增刪改查,facade的使用!在上一篇的文章中,我們學習了如何讓在laravel中創建視圖和模型的操作,今天我們將來學習如何在laravel中對資料庫進行增刪改查,通過facade來實現,具體操作如下:前提:首先我們需要在laravel中配置好資料庫,進入laravel的目錄,找到.env這個文件,在裡面對資料庫的主機名,資料庫名,用戶名,密碼進行配置,配置成功之後,我們才能夠對資料庫進行設置
  • 3分鐘短文:Laravel ORM 模型用法綱要
    這是一個位於資料庫操作之上的一個中間層, 不僅僅是對於整張表的操作,更能細化到每行記錄的增刪改查。 創建一個模型類非常簡單,只用繼承系統的模型就可以了: use Illuminate\Database\Eloquent\Model; class Contact extends Model {} 因為遵循的是約定大於配置的慣例,所以上述模型如不指定表名,默認就是默認資料庫的
  • 5分鐘在laravel框架下完成網站搭建
    反正小編覺得Laravel還真的不錯,國外成熟的插件和模板也是不少的,今天小編就給大家分享一下如何5分鐘在laravel框架下完成網站搭建。做網站少不了CMS,也就是內容管理系統,小編就上網搜了下Laravel 網站方面的內容,就搜到了October,這是一個內容管理系統(CMS),更是一個致力於讓開發工作流變得簡單的web平臺。
  • VSCode的Laravel語法提示插件
    例如,假設您需要為新創建的模型編寫工廠。在當前版本的Laravel中,您需要在遷移類,資料庫表或PHPDoc欄位名稱中引用資料庫欄位,以查看可用的欄位。如果Visual Studio Code不適合您,Blueprint 可能會通過從集中式配置文件生成各種文件來滿足這種自動完成的需求 。
  • Docker容器的三種創建運行方式,一個比一個好用
    現在的項目部署運維中,使用Docker容器越來越多,Docker給我們提供創建容器的方式也有好幾種,主要是docker run命令、Dockerfile文件、docker-compose三種方式,一個比一個方便。我們來看下有幾種方式的具體用法吧。
  • ApiBlueprint在laravel框架中的使用
    包生成apib文件,這個文件是一個遵循blueprint接口規範的markdown文件。2.給laravel項目引入composer包(包已經提交,不過國內鏡像還沒同步)composer require birjemin/blueprint3.在app.php中添加BlueprintServiceProvider::class4.給接口添加注釋,添加在Controller入口方法前面(詳細的注釋方式請查看https:
  • 掌握 Laravel 的測試方法
    例如,我們可以為包含如下步驟的登錄功能實現一個功能測試用例:發起一個訪問登錄頁面的 GET 請求;判斷我們是否處在登錄頁面;生成用於採用 POST 請求方式登錄的登錄數據;判斷是否創建登錄會話數據成功。這就是應該如何創建「功能測試」用例的秘密。
  • Laravel-基礎「程式設計師培養之路第五十三天」
    Laravel是一款簡潔、優雅的PHP Web開發框架,它可以讓你從麵條一樣雜亂的代碼中解脫出來;它可以幫你構建一個完美的網絡APP,而且每行代碼都可以簡潔、富於表達力。安裝 Composer下載地址:github(點擊 Composer-Setup.exe 按鈕)3.下載 Laravelcomposer global require "laravel/installer"第二節 配置在使用前,要確保以下幾個內容的配置是正確的,配置有問題會影響我們的項目開發。1.
  • 3分鐘短文:任命管理員,給Laravel普通用戶提權
    我們在users表內追加一個欄位 is_admin 用於標記用戶的管理員身份,使用命令創建遷移文件: 首先填充 up 方法用於遷移執行的邏輯: 如果遷移失敗,進行回滾使用的 down 方法: 完成編輯後保存,並執行遷移指令:
  • 來聊聊 Shadowfax 是如何整合 Laravel 與 Swoole 的
    熟悉Swoole的朋友應該知道使用Swoole創建一個HTTP伺服器只需要設置一個request回調即可,那麼我們將Laravel搬到request回調裡面來執行不就好了嗎?的確如此,我們來嘗試一下,首先創建一個新的Laravel項目:然後在Laravel項目的根目錄創建一個swoole.php腳本,代碼如下:<?