1、基礎篇php
Laravel是一個有着美好前景的年輕框架,它的社區充滿着活力,同時提供了完整而清晰的文檔,並且爲快速、安全地開發現代應用提供了必要的功能。
2011年,Taylor Otwell首次將Laravel帶給這個世界,彼時,Laravel就是一個全新且現代的框架。Laravel基於MVC架構,能夠知足諸如事件處理、用戶身份驗證等各類需求,同時經過包管理實現模塊化和可擴展的代碼,而且對數據庫管理有着健壯的支持。
無論是專家仍是新手,一旦接觸到Laravel,都會有相見恨晚之感——這正是你在爲PHP項目尋找的框架。mysql
一、找到安裝包傻瓜式安裝laravel
二、composer安裝sql
下載安裝包命令:composer create-project laravel/laravelblog數據庫
composer通常在項目中使用composer.jsonjson
eg:require 關鍵字:哪些包是你項目所須要的安全
{架構
"require":{app
"monolog/monolog":"1.0.*"composer
}
}
安裝命令:找到composer.json位置 執行安裝命令 composer install
(1)eg:php artisan serve --prot =8080 (設置端口)
(2)eg:php artisan make:model Article (創建model)
去看看你的 app 目錄,下面是否是多了一個 Article.php 文件?那就是 Artisan 幫咱們生成的 Model 文件
(3)eg:php artisan migrate(數據庫的遷移)
migration 是啥
打開learnlaravel5/database/migrations/2014_10_12_000000_create_users_table.php
文件,你確定能一眼看出它的做用:用 PHP 描述數據庫構造,而且使用命令行一次性部署全部數據庫結構
模擬插入數據
訪問目錄下public 這樣laravel就跑起來了
.env文件
DB_HOST=127.0.0.1
DB_DATABASE=laravel5
DB_USERNAME=root
DB_PASSWORD=root
詳細見:http://blog.csdn.NET/woshihaiyong168/article/details/53197366
三、定義路由 (laravel受歡迎的主要緣由)
路由位置:app/Https/routes.php
Route::any('/', 'HomeController@add'); 定義任何方式都能訪問的默認控制器和默認方法
Route::post('/add', 'HomeController@add'); 定義 post方式方法
Route::get('/delete/{id}','HomeController@del'); 定義get方式接值:缺點必須在方法參數中寫入所接值
定義路由組
Route::group(['middleware' => 'auth', 'namespace' => 'Admin', 'prefix' => 'admin'], function() {
Route::get('/', 'HomeController@index');
});
定義路由得方式有不少詳細見:https://laravel-china.org/docs/5.1/routing#route-groups
2、由於laravel框架是基於MVC的下面咱們就從其着手分析
一、框架目錄篇
二、MVC篇
控制器位置:app/Http/controllers/創建控制器
1、控制器
(1)Controller 控制器原理解析:
咱們經過路由找到控制器那麼咱們這個路由位置在哪裏?
app/Providers/RouteServiceProvider.php (路由服務供應者)
protected $namespace = 'App\Http\Controllers'; 將路由空間指向了控制器位置 找到空間以後命名空間、類、方法是如何傳遞的呢? vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(分配器)
/** * Dispatch a request to a given controller and method. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @param string $controller * @param string $method * @return mixed */ public function dispatch(Route $route, Request $request, $controller, $method) { $instance = $this->makeController($controller); return $this->callWithinStack($instance, $route, $request, $method); // var_dump($controller); } 此方法就是傳遞路由中定義的控制器、方法 下面咱們以HomeController.php爲例:
class HomeController extends Controller
所繼承的Controller位置在 :
/** * Execute an action on the controller. * * @param string $method * @param array $parameters * @return \Symfony\Component\HttpFoundation\Response */ public function callAction($method, $parameters) { return call_user_func_array([$this, $method], $parameters); } (2)創建控制器的兩種方式: 一、在app/Http/controllers/創建TestController.php
<?php namespace App\Http\Controllers; use App\Http\Requests; use Illuminate\Http\Request; class TestController extends Controller { public function show(){
echo 123;
}}
在routes.php中定義路由:
Route::get('/test', 'TestController@show'); 二、在cmd窗口進入到當前框架目錄下 eg:php artisan make:controller Admin/HomeController ("位置app/Http/controllers/",控制名) (3)控制器操做:
重定向: return redirect()->action('HomeController@show');
return redirect('show')
顯示視圖層以及傳值:
return view('upda',["list"=>$list]);
2、view視圖層
(1) 視圖層位置:resources/views
文件後綴爲 .blade.php 控制器中顯示視圖 輸入名字就行
若是是在views下新建文件夾控制器跳轉(所見文件夾/視圖名)
(2)公共模板 公共視圖位置:resources/views/layouts/ eg:app.blade.php <body>@yield('content')</body> 公共視圖引用: //繼承公用模板 @extends('layouts.app')
app是 resources/views/layouts/app.blade.php 能夠換成其餘的
@section('content')不同的內容 @endsection此時不同的內容會替換公共模板中的 @yield('content')視圖中顯示值<form action="{{URL('/add')}}" method="post" ><a href="{{URL('/del')}}?id={{$v->id}}">刪除</a><a href="{{ url('article/'.$article->id) }}">eg:{{ $v->id }}@if(條件) ...@else ...@endifeg:@foreach ($data as $v) <tr> <td>{{ $v->id }}</td> <td>{{ $v->title }}</td> <td>{{ $v->message}}</td> <td>{{ $v->time}}</td> <td><a href="delete/{{ $v->id }}">刪除</a>|<a href="upda/{{ $v->id }}">修改</a></td> </tr> @endforeach@for ($i = 0; $i < 10; $i++) The current value is {{ $i }}@endfor3、model層使用請見博客