一.環境配置:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.2 LTS
Release: 12.04
Codename: precise
$ php -v
PHP 5.4.45-3+deb.sury.org~precise+1 (cli) (built: Jan 7 2016 15:32:17)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
$ php artisan --version
Laravel Framework version 5.0.16
二.laravel 文件目錄
$ composer create-project laravel/laravel example --prefer-dist
$ $ tree -L 2
.
|-- app
| |-- Commands
| |-- Console
| |-- Events
| |-- Exceptions
| |-- Handlers
| |-- Http
| |-- Providers
| |-- Services
| `-- User.php
|--
artisan
|-- bootstrap
| |-- app.php
| `-- autoload.php
|-- composer.json
|-- composer.lock
|-- config
| |-- app.php
| |-- auth.php
| |-- cache.php
| |-- compile.php
| |-- database.php
| |-- filesystems.php
| |-- mail.php
| |-- queue.php
| |-- services.php
| |-- session.php
| `-- view.php
|-- database
| |-- migrations
| `-- seeds
|-- gulpfile.js
|-- package.json
|-- phpspec.yml
|-- phpunit.xml
|-- public
| |-- css
| |-- favicon.ico
| |-- fonts
| |-- index.php
| `-- robots.txt
|-- readme.md
|-- resources
| |-- assets
| |-- lang
| `-- views
|-- server.php
|-- storage
| |-- app
| |-- framework
| `-- logs
|-- tests
| |-- ExampleTest.php
| `-- TestCase.php
`
-- vendor
|-- autoload.php
|-
- bin
|-- classpreloader
|-- compiled.php
|-- composer
|-- danielstjules
|-- dnoegel
|-- doctrine
|-- ircmaxell
|-- jakub-onderka
|-- jeremeamia
|-- laravel
|-- league
|-- monolog
|-- mtdowling
|-- nesbot
|-- nikic
|-- phpdocumentor
|-- phpspec
|-- phpunit
|-- psr
|-- psy
|-- sebastian
|-- services.json
|-- swiftmailer
|-- symfony
`-- vlucas
51 directories, 31 files
說明:
laravel項目下主要文件夾:app、bootstrap、config、database、public、resources、storage、tests、vender;
1.app
包含了應用的核心代碼;
其中Console和Http文件提供了應用的主要結構程序API,HTTP協議和CLI雖然是兩種與應用交互的機制,但實際上並不包含應用的邏輯關係;換句話說,它們僅僅是兩種對應用發佈命令的方式。Console文件中包含了全部Artisan命令,而Http文件夾包含了控制器(controllers)、中間件(middleware)和請求(requests);
Commands文件夾,存放了對於應用的命令,Commands表明任務能夠被你的應用隊列,固然也包含任務能夠被同步地運行到目前請求的業務聲明週期中;
Events文件夾,顧名思義,存放着事件的類;固然用類去表現事件不是必須的;然而,若是你選擇使用它們,當你運用Artisan命令建立的時候,這個文件是默認位置;
Handlers文件夾包含了和commands以及events相關的處理器(handler)類,Handler接受一個命令或事件,而後執行其邏輯;
Services文件夾包含了大量的「helper」服務。例如Laravel內置的用於驗證和建立新用戶的Registrar服務。其餘也多是與外部API、度量系統或來自應用的集成數據想交互的服務;
Exceptions包含了應用的異常處理程序,也是應用拋出異常的好地方;
注意:
1).app文件夾中的許多類均可以經過Artisan命令產生,如:
$ php artisan list make
Available commands for the "make" namespace:
make:command Create a new command class
make:console Create a new Artisan command
make:controller Create a new resource controller class
make:event Create a new event class
make:middleware Create a new middleware class
make:migration Create a new migration file
make:model Create a new Eloquent model class
make:provider Create a new service provider class
make:request Create a new form request class
2).命名空間
應用默認的命名空間(namespace)爲App;而後,你能夠改變這一命名空間,經過簡單的Artisan 命令(app:name),以與你的應用相匹配,例如,假設你的應用名爲solar,你能夠經過如下的命令實現:
$ php artisan app:name solar
2.bootstrap
包含了一些應用啓動時須要的文件;
3.config
包含應用的配置文件,完成更多業務上的需求,如應用系統配置、驗證(模型、驗證表)配置、緩存(存儲方式)配置、編譯(附加編譯類、編譯器提供者)配置、數據庫(提取模式、默認數據庫鏈接名、鏈接方式、遷移庫表、Redis數據庫)配置、文件系統(文件系統磁盤位置)配置、郵件(郵箱驅動程序、服務器主機地址/端口號、全局源地址、email加密協議、服務器用戶名/密碼、驅動程序系統位置、郵件假裝)配置、隊列(默認隊列驅動程序、隊列鏈接方式、失敗隊列管理)配置、服務(第三方服務認證)配置、會話(默認會話驅動程序、會話生命週期、會話加密、會話文件位置、會話數據庫鏈接/數據庫表、會話清除機率、會話臨時文件名/路徑/域HTTPS臨時文件)配置、視圖(視圖文件存儲路徑、編譯視圖文件路徑)配置。
4.database
包含了數據遷移(migration)和填充(seeds);
5.public
包含了前端文件,便可以對外開放的資源(images,JavaScript,CSS,字體包等);
6.resources
包含了視圖相關的文件,一些原始的如LESS、SASS、ConffeeScript、語言包文件等;
7.storage
包含了已編譯的blade模板、會話文件、文件緩存、log文件以及其餘框架產生的臨時文件,該目錄須要可寫權限;
8.tests
包含了自動測試文件;
9.vender
包含Composer命令相關管理文件,包含了許多PHP相關的app應用程序;