安裝過程
(php7.0+Linux+Laravel)
php7.0安裝Laravel
apt-get install php7.0-fpm php7.0-mysql php7.0-common php7.0-curl php7.0-mbstring
安裝composer組件
wget https://getcomposer.org/composer.pharchmod +x composer.pharmv composer.phar /bin/composer
在php.ini中打開php_openssl的擴展程序
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)站縮寫,因為我是跟著實驗樓學(xué)習(xí)的,因此個人安裝的第二條命令,最新版的Laravel我發(fā)現(xiàn)md是什么網(wǎng)站縮寫了一些很明顯的改變
用composer初始化
composer update
最后在Laravel的Pulbic目錄運行
php -S localhost:81
在瀏覽器窗口輸入Localhost:81即可看到Laravel運行成功的畫面
文件結(jié)構(gòu)
下面簡單介紹一下Laravel源碼里每個文件夾都是用來做什么的,了解結(jié)構(gòu)才能更好地進行后續(xù)的開發(fā)。
文件夾 介紹app 網(wǎng)站的業(yè)務(wù)邏輯代碼,例如:控制器/模型/路由等bootstrap 框架啟動與自動加載設(shè)置相關(guān)的文件config 網(wǎng)站的各種配置文件database 數(shù)據(jù)庫操作相關(guān)的文件public 網(wǎng)站的對外文件夾,入口文件和靜態(tài)資源(CSS,JS,圖片等)resources 前端視圖文件和原始資源(CSS,JS,圖片等)storage 編譯后的視圖、基于會話、文件緩存和其它框架生成的文件tests 自動化測試文件vendor Composer 依賴文件
除了上述文件夾,根目錄下有些文件也比較常用:
文件 介紹.env 環(huán)境配置文件.env.example .env 文件的一個示例.gitignore git 的設(shè)置文件,制定哪些文件會被 git 忽略,不納入文件管理composer.json 網(wǎng)站所需的 composer 擴展包composer.lock 擴展包列表,確保這個網(wǎng)站的副本使用相同版本的擴展包gulpfile.js GULP 配置文件( GULP 后邊會學(xué)到)package.json 網(wǎng)站所需的 npm 包readme.md 網(wǎng)站代碼說明文件
路由
路由系統(tǒng)會對用戶輸入的URL地址進行解析,然后分配不同的工作,有點像路由器。
基本路由
結(jié)構(gòu)一般是如下:
Route::get('welcome', function () { return view('welcome');});Route::get('/', function() { return 'Index Page';});
路由動作
我們知道,一個url請求可能有多種類型,除了常用的GET,還可能有POST、PUT、DELETE等類型的請求。
對應(yīng)的處理方法如下:
Route::post('/foo', function() { //該路由將匹配 post方法的 '/foo' url});Route::put('/foo', function() { //該路由將匹配 put方法的 '/foo' url});
除此之外,還可以用match來同時處理多種類型的請求:
Route::match(['get', 'post'],'/foo', function () { // 該路由將匹配 get 和 post 方法的 'foo' url});
甚至,還可以使用any來同時處理所有類型的請求:
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。
有時md是什么網(wǎng)站縮寫你需要指定可選的路由參數(shù),可以通過在參數(shù)后面加上?來實現(xiàn)。
Route::get('hello/{name?}', function ($name = null) { return 'Hello! '.$name;});
這時md是什么網(wǎng)站縮寫你訪問localhost/hello將不會報錯,只是參數(shù)是空值,也可以為該可選參數(shù)設(shè)定一個默認(rèn)值,當(dāng)url未傳參時,將顯示默認(rèn)值。
Route::get('hello/{name?}', function ($name = 'Tom') { return 'Hello! '.$name;});
命名路由
Route::get('foo', function() { //})->name('foo');
在后面添加一個后綴->name('foo')即可
正則表達式限制路由
你可以使用where方法來限制參數(shù)的格式。where方法接受參數(shù)的名稱和正則表達式。
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'這個URL的時候,調(diào)用UserController這個控制器的name方法來處理請求。也就是說,將原來的閉包函數(shù)放到了一個單獨的文件中。
我們可以將有共同特征的路由處理函數(shù)放到一個共同的控制器中,例如下面這種方式:
<br /><br />Route::get('/user/name', 'UserController@name');Route::get('/user/age', 'UserController@age');Route::get('/user/introduction', 'UserController@introduction');
基礎(chǔ)控制器
首先用artisan命令創(chuàng)建一個新的控制器,打開命令行,進入代碼根目錄:
php artisan make:controller UserController
然后轉(zhuǎn)到app/Http/Controllers目錄下,可以看到剛剛創(chuàng)建的UserController.php。打開這個文件:
我們可以看到,Laravel為我們生成了一些默認(rèn)的代碼,仔細觀察可以發(fā)現(xiàn)是7個空方法,分別是:
index()
create()
store()
show()
edit
update
destroy
其中index()通常用來顯示引導(dǎo)頁/首頁,其他的六個通常用來對數(shù)據(jù)的創(chuàng)建/讀取/更新/刪除操作,簡稱CRUD:
Create Retrieve Update Delete。
現(xiàn)在我們先刪除這些空操作,然后創(chuàng)建一個新方法:
<?phpnamespace AppHttpControllers;use IlluminateHttpRequest;use AppHttpRequests;use AppHttpControllersController;class UserController extends Controller{ public function name(){ return 'Name Page'; }}
也可以用如下命令創(chuàng)建不帶空方法的類
php artisan make:controller UserController --plain
訪問一下localhost/user/name即可看到返回效果
相當(dāng)于把路由那部分代碼放到控制器里去做了,簡化了routes.php文件內(nèi)容,只做路由轉(zhuǎn)發(fā)的作用
控制器的命名空間
namespace AppHttpControllers;
UserController.php 文件開始有這么一行,這行聲明了該控制器的命令空間, 因為這也是控制器的默認(rèn)命令空間,因此在routes.php中調(diào)用控制器的語句為:
UserController@name
如果控制器是在User目錄下面,即
php artisan make:controller User/UserController
那么這個文件的命令空間就是:
namespace AppHttpControllersUser;
路由部分的寫法就是:
Route::get('/user/name', 'UserUserController@name');
控制器的依賴注入
控制器中還有幾行神奇的代碼
use IlluminateHttpRequest;use AppHttpRequests;use AppHttpControllersController;
所有的Controller都依賴基礎(chǔ)Controller.php,所以需要:
use AppHttpControllersController;
比如,當(dāng)我們處理請求的時候,我們引入Request類,才可以使用很多 Laravel 提供的方法:
use IlluminateHttpRequest;
視圖
視圖文件存放在 resources/views 目錄下,后綴是.blade.php,表示用的blade模板引擎。
視圖既可以在路由文件中調(diào)用也可以在控制器中調(diào)用。
Route::get('errors', function () { return view('errors.503', ['message' => '503 ERROR']);});
view()函數(shù)接收兩個參數(shù),一個是視圖文件名,第二個是一個數(shù)組,可以在視圖文件中用{{ $message }}這樣調(diào)用:
先介紹到這里了,之后繼續(xù)學(xué)習(xí)在更新啦,發(fā)現(xiàn)laravel跟flask真的好像,簡單易學(xué),賊歡喜。
文章來源:
https://www.blogsir.com.cn/safe/369.html
評論列表
還沒有評論,快來說點什么吧~