laravel

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')
  1. 環境與部署
    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值
相關文章
相關標籤/搜索