安裝composer組件
wget https://getcomposer.org/composer.pharchmod +x composer.pharmv composer.phar /bin/composer
在php.ini中打開php_openssl的擴(kuò)展程序
composer create-project laravel/laravel Laravel --prefer-distcomposer create-project laravel/laravel Laravel --prefer-dist "5.1.*"
第一條是獲取最新的Laravelmd是什么網(wǎng)站縮寫, 第二條是5.1版本的md是什么網(wǎng)站縮寫,因?yàn)槲沂歉鴮?shí)驗(yàn)樓學(xué)習(xí)的,因此個(gè)人安裝的第二條命令,最新版的Laravel我發(fā)現(xiàn)md是什么網(wǎng)站縮寫了一些很明顯的改變
用composer初始化
composer update
最后在Laravel的Pulbic目錄運(yùn)行
php -S localhost:81
在瀏覽器窗口輸入Localhost:81即可看到Laravel運(yùn)行成功的畫面
文件結(jié)構(gòu)
下面簡(jiǎn)單介紹一下Laravel源碼里每個(gè)文件夾都是用來做什么的,了解結(jié)構(gòu)才能更好地進(jìn)行后續(xù)的開發(fā)。
文件夾 介紹app 網(wǎng)站的業(yè)務(wù)邏輯代碼,例如:控制器/模型/路由等bootstrap 框架啟動(dòng)與自動(dòng)加載設(shè)置相關(guān)的文件config 網(wǎng)站的各種配置文件database 數(shù)據(jù)庫(kù)操作相關(guān)的文件public 網(wǎng)站的對(duì)外文件夾,入口文件和靜態(tài)資源(CSS,JS,圖片等)resources 前端視圖文件和原始資源(CSS,JS,圖片等)storage 編譯后的視圖、基于會(huì)話、文件緩存和其它框架生成的文件tests 自動(dòng)化測(cè)試文件vendor Composer 依賴文件
除了上述文件夾,根目錄下有些文件也比較常用:
文件 介紹.env 環(huán)境配置文件.env.example .env 文件的一個(gè)示例.gitignore git 的設(shè)置文件,制定哪些文件會(huì)被 git 忽略,不納入文件管理composer.json 網(wǎng)站所需的 composer 擴(kuò)展包c(diǎn)omposer.lock 擴(kuò)展包列表,確保這個(gè)網(wǎng)站的副本使用相同版本的擴(kuò)展包gulpfile.js GULP 配置文件( GULP 后邊會(huì)學(xué)到)package.json 網(wǎng)站所需的 npm 包readme.md 網(wǎng)站代碼說明文件
路由
路由系統(tǒng)會(huì)對(duì)用戶輸入的URL地址進(jìn)行解析,然后分配不同的工作,有點(diǎn)像路由器。
基本路由
結(jié)構(gòu)一般是如下:
Route::get('welcome', function () { return view('welcome');});Route::get('/', function() { return 'Index Page';});
路由動(dòng)作
我們知道,一個(gè)url請(qǐng)求可能有多種類型,除了常用的GET,還可能有POST、PUT、DELETE等類型的請(qǐng)求。
對(duì)應(yīng)的處理方法如下:
Route::post('/foo', function() { //該路由將匹配 post方法的 '/foo' url});Route::put('/foo', function() { //該路由將匹配 put方法的 '/foo' url});
除此之外,還可以用match來同時(shí)處理多種類型的請(qǐng)求:
Route::match(['get', 'post'],'/foo', function () { // 該路由將匹配 get 和 post 方法的 'foo' url});
甚至,還可以使用any來同時(shí)處理所有類型的請(qǐng)求:
Route::any('/foo', function() { // 該路由將匹配 所有 類型的 'foo' url});
路由參數(shù)
Route::get('sum/{a}/', function ($a, $b) { return $a . ' + ' . $b . '=' . $a + $b;});
訪問localhost/sum/1/2 , 返回1+2=3。
有時(shí)md是什么網(wǎng)站縮寫你需要指定可選的路由參數(shù),可以通過在參數(shù)后面加上?來實(shí)現(xiàn)。
Route::get('hello/{name?}', function ($name = null) { return 'Hello! '.$name;});
這時(shí)md是什么網(wǎng)站縮寫你訪問localhost/hello將不會(huì)報(bào)錯(cuò),只是參數(shù)是空值,也可以為該可選參數(shù)設(shè)定一個(gè)默認(rèn)值,當(dāng)url未傳參時(shí),將顯示默認(rèn)值。
Route::get('hello/{name?}', function ($name = 'Tom') { return 'Hello! '.$name;});
命名路由
Route::get('foo', function() { //})->name('foo');
在后面添加一個(gè)后綴->name('foo')即可
正則表達(dá)式限制路由
你可以使用where方法來限制參數(shù)的格式。where方法接受參數(shù)的名稱和正則表達(dá)式。
Route::get('hello/{name?}', function ($name = 'Tom') { return 'Hello! '.$name;})->where('name','[A-Za-z]+');
一些其他函數(shù)
url()可以使用url('foo')函數(shù)來生成完整的URL。
控制器
路由部分代碼: (Routes.php)
Route::get('/', function () { return view('welcome');});Route::get('/user/name', 'UserController@name');
這段代碼的意思就是,當(dāng)用戶訪問'localhost/user/name'這個(gè)URL的時(shí)候,調(diào)用UserController這個(gè)控制器的name方法來處理請(qǐng)求。也就是說,將原來的閉包函數(shù)放到了一個(gè)單獨(dú)的文件中。
我們可以將有共同特征的路由處理函數(shù)放到一個(gè)共同的控制器中,例如下面這種方式:
<br /><br />Route::get('/user/name', 'UserController@name');Route::get('/user/age', 'UserController@age');Route::get('/user/introduction" alt=" md是什么網(wǎng)站縮寫_md是什么網(wǎng)絡(luò)語言縮寫" title=" md是什么網(wǎng)站縮寫_md是什么網(wǎng)絡(luò)語言縮寫">