1.什麼事composer?
composer是一種php類庫依賴關係管理器
網址:https://getcomposer.org/
2.composer下載laravelphp
composer create-project laravel/laravel --prefer-dist blog 5.2.*
composer命令 建立項目 laravel項目文件 說明是壓縮文件 下載到哪一個目錄 laravel版本 laravel
在Linux中須要給storage和vender賦予權限redis
3.路由,請求的一級分發者數據庫
Route::get('/', 'IndexController@index'); //get請求 Route::post('/', 'IndexController@index'); // post請求 Route::resource('home', 'HomeController@index'); // 資源型請求
resource會多幾條的路由
4.控制器,請求的二級分發者
快速建立控制器數組
php artisan make:controller HomeController
5.查看路由列表服務器
php artisan route:list
6.控制器給視圖view層傳參cookie
return view('index')->with('name','tong');
或session
$data = [ 'name'=>'tong', 'age'=>18 ]; return view('index',$data);
或併發
$name = 'tong'; return view('index',compact('name')); //等同於['name'=>'tong']
7.blade模板引擎
7.1什麼是blade模板引擎?blade是Laravel框架下的默認模板引擎
輸出app
{{$name}} => <?php echo $name ?> {{$name or '無名大俠'}} => <?php !empty($name) ? $name : '無名大俠'?> @{{$name}} //不解析
7.2控制流和循環
if
@if($anme) 你好{{$anme}}. @else 你叫什麼? @endif
foreach
<ul> @foreach($name as $value) <li>{{$value}}</li> @endforeach </ul>
7.3子視圖
//<title>子視圖 - Laravel教程<title> 將公共樣式放在common目錄中,而後引用@include('common.head')
環境與部署
8.1 數據庫
首先看看項目根目錄有沒有.env文件,沒有的話複製.env.example,名字叫作.env,裏面存放一些全局的環境變量參數 DB::connection()->getDatabaseName(); //查看有沒有連接成功
8.2 session
8.3 環境文件
注意:上傳項目的時候必定要注意刪除.env文件
8.4 部署和開發模式切換
8.5 down/up
好比咱們的網站忽然發生了一些大規模的攻擊或一些其餘的問題,形成咱們的一些數據的丟失,數據完整性的問題,數據一致性的問題,總之就是一些比較嚴重的問題,以致於咱們不得不停下來,首先給用戶一個503頁面,讓用戶知道咱們的網站遭遇了一些問題正在搶修,何時恢復,或恢復時間不肯定,給用戶一個這樣的頁面,遇到這種狀況,咱們能夠直接 php artisan down 給用戶提示,等網站恢復後 php artisan up 讓項目正常運行
9.eloquent--一種和數據庫交互的機制,好用,優雅
快速建立model:php artisan make:model User
protected $table = 'user';//表名 protected $guarded = ['user_id'];//不被賦值的屬性 protected $hidden;//隱藏數據,禁止查詢 protected $primaryKey = 'id';//主鍵 protected $fillable = ['name'];//那些屬性能夠被賦值 public $timestamps = false;關閉時間戳字段得添加 $model->findorFail();查詢不到數據就報錯 //查詢數據 $this->all(); //添加數據 $data = ['useraname'=>'sssss','pwd'=>'sdasdsa']; $model->fill($data_array());以數組的形式添加數據,異常強大不在$this->username = $data['username']; $model->save(); //修改數據 $user= $model->find($id); $user->username = 'adsadasd'; $user->save(); //批量修改 $user = $this->where('age','<',18); $user->update(['username'=>'adasda','age'=>60]); ///刪除數據 $user = $this->find($id); $user->delete(); //經過主鍵刪除模型 App\Flight::destroy(1); App\Flight::destroy([1, 2, 3]); App\Flight::destroy(1, 2, 3); //經過查詢刪除模型 $deletedRows = App\Flight::where('active', 0)->delete(); //添加額外約束 $flights = App\Flight::where('active', 1) ->orderBy('name', 'desc') ->take(10) ->get();
9.集合
$user = new App\User(); $users = $user->all(); dd($users); //等同於var_dump($users);die; $users->toArray(); //將集合變爲數組 $arr = ['sss','ddd']; $collection = collect($arr); //將數組變爲集合,能夠方便的使用結合中的方法 $data = $collection->all(); //則又能夠得到數據的原型 $bool = $collection->contains('sss');//查看集合中有沒有sss這個值,有的話返回true,沒有返回false $collection->has('sss');//查看集合中有沒有叫sss的鍵 $collection->take(2);//取出集合中的前兩個值,若是爲負值,則從後往前取
10.操做用戶產生的數據
10.1請求(requset)
10.1.1基礎:獲取用戶提交的數據
input::get('name'); //能夠獲取url路徑中的值 Request::all(); //返回用戶提交的全部數據
10.1.2請求實例
Request::get('name');//接受用戶輸入的數據;可選的第二個參數,給它一個默認值 Request::query('name');//與get類似,但具備更強的選擇性,固定接受地址欄中的數據,沒有參數返回全部數據 Request::has('name');//查看用戶提交的數據中是否有name鍵,而且不爲空的時候,返回true;不然false Request::exists('name');//查看用戶提交的數據中是否存在name鍵 Request::only('name','age');//限制用戶的輸入,只接受name和age這兩個參數 Requset::except('name','age');//與only()正好相反,除了name和age,其餘的參數都接受 Requset::url();//返回網址(不帶參數) Requsett::fullUrl();//返回所有網址(帶參數)
10.1.4請求歷史
當用戶提交信息錯誤的時候,把用戶填寫的數據再返回去,提升用戶體驗度 Request::falsh();//用戶數據處理失敗後,保存以前提交的數據 Request::falshOnly();//同falsh()同樣,只存某些數據 Request::falshExcept();//同falsh()同樣,除了這幾個數據,其餘的數據都存儲 Request::old();//提交失敗返回後,在拿出以前用戶的數據
10.1.5文件
Request::file('myFile');//獲取用戶在請求中所包含的全部文件 Request::hasFile('myFile');//是否有上傳文件,返回bool值 Request::file('myFile')->getSize();獲取文件大小 Request::file('myFile')->getClientOriginalName();//獲取客戶端上傳文件的名稱 Request::file('myFile')->getClientOriginalExtension();獲取客戶端上傳文件的後綴 <input type="file" name="myFile" multiple> //可讓文件多選
11.會話:session
會話用於儲存用戶和服務器之間的一個狀態 Session:::all();//獲取全部的session Session::put($key,$value);/添加一個session Session::get('username');//獲取某個session Session::has('username');//有沒有名叫username的session Session::forget('username');//銷燬某個session Session::pull();用一次以後就被銷燬,能夠在用戶修改數據的時候,和falsh配合使用
12.會話配置
在laravel中,session默認使用文件存儲的,可對於一個真正跑在線上的項目來講,它對性能的要求是比較高的,尤爲是大併發量的項目,因此說,一半咱們能存在數據庫,就存在數據庫,由於文件的讀取速度不比較慢,下面是具體過程 1.在.env中,修改 SESSION_DRIVER=database 2.生成從存儲session的數據表:php artisan session:table 3.composer dump-autoload 從新生成框架的自動加載文件 4.php artisan migrate 執行數據遷移
除了database,session還能夠存儲在cookie,memcache,redis中
13.數據驗證
public function create(){ //接收數據 $data = Request::all(); //驗證數據 $validator = Validator::make($data,[ 'username'=>'required|min:4|max:10|unique:user',//username必填,最少4位,最多10位(between:4,10),user表中要惟一 'pwd'=>'numeric|required'//pwd必須爲數字,必填,,多個驗證用‘|’隔斷 ]); //對驗證失敗作出相應 if($validator->fails()){ return $validator->errors(); } //驗證成功 return '驗證成功!'; }
14.哈希hash
//hash Route::get('hashmake',function(){ $password = Request::get('password'); $hashPassword = Hash::make($password); Session::put('hashpassword',$hashPassword); return Session::get('hashpassword'); }); Route::get('hashcheck',function(){ $inputpassword = Request::get('password'); $hashpassword = Session::get('hashpassword'); if(Hash::check($inputpassword,$hashpassword)){//第一個參數是輸入的密碼,第二個參數是哈希密碼 echo "密碼輸入正確"; }else{ echo "密碼輸入錯誤"; } });
15.幫助函數
15.1幫助函數--array
//head()返回數組中的第一個參數 $arr = ['one','two','three']; head($arr);//one //array_only() $arr = ['one'=>'hou','two'=>'li','three'=>'zhao']; return array_only($arr,['one','two']);//只要數組中的one和two鍵的值 //['one'=>'hou','two'=>'li'] //array_first()返回知足條件的第一個值 $arr1 = [1,2,3]; return array_first($arr1,function($key,$value){ return $value>=2; }); //2 //array_add($arr,$key,$value)向數組中添加值 $arr = ['one'=>'hou','two'=>'li','three'=>'zhao']; return array_add($arr,'four','zhang'); //['one'=>'hou','two'=>'li','three'=>'zhao','four'=>'zhang'] //array_except($arr,$arr_except)除了什麼,返回數組中其餘的值 $arr = ['one'=>'hou','two'=>'li','three'=>'zhao']; return array_except($arr,['two']); //{"one":"hou","three":"zhao"} //array_flatten將多爲數組轉化成覺得數組 $arr = ['one'=>'hou','two'=>'li','three'=>['zhao','zhang']]; return array_flatten($arr); //["hou","li","zhao","zhang"] //array_where();返回知足條件的參數 $arr = ['one'=>'hou','two'=>'li','three'=>['zhao','zhang']]; return array_where($arr,function ($k,$v){ return is_array($v); }); //{"three":["zhao","zhang"]} //array_last()返回數組中的最後一個值 $arr = ['one'=>'hou','two'=>'li','three'=>'zhao']; return array_last($arr); //zhao
15.2幫助函數--path
app_path();//返回項目的路徑 config_path();//返回配置路徑 public_path();//返回public的路徑 storage_path();//返回storage的路徑(過程文件的儲存目錄)
15.3幫助函數--string
str_plural($str);//某個英文單詞的複數,很是智能,不是你所看到的那麼簡單 starts_with('asd','a');//該字符傳是否以a開頭,返回bool值 end_with('asd','d');//該字符傳是否以d結尾,返回bool值 camel_case($str);//將字符串轉化成駝峯式 class_basename('App\Http\Controllers\TestController');//只返回TestController str_limit('abcd',3);//abc... 限制字符串的長度,超出後在字符串後加上‘...’ str_is('ab*','abcd');//至關於正則,判斷支付穿是否知足於某種模式,第一個參數是條件,第二個參數是匹配的字符串,返回bool值