1. 程式人生 > >laravel框架基礎知識

laravel框架基礎知識

一.TP5Laravel框架的區別

 區別:

1提交資料的方式,Laravel在提交表單時需要在表單中加入{csrf_field}來防止跨域攻擊,而TP不會。

 2路由,Laravel必須先定義,再使用,路由檔案為routes.phpTP在配置檔案中開啟路由後,路由格式是:'路由表示式' => '路由地址和引數'(使用路由的前提是URL支援phthinfo並且開啟路由),路由可以使URL更符合SEO

3中介軟體,Laravel的中介軟體,中介軟體就是HTTP請求到達之前經過的層,通過中介軟體我們可以驗證使用者是否登入等一些通用操作。

4操作資料庫方式,都可以使用例項化(建立相對應的模型類)和

DB:table('表名')來操作資料庫,使用原生查詢時不太相同,Laravel使用Db::操作('原生sql')TP使用Db::query('原生sql')

5Laravel升級十分簡易,而TP大版本的升級要重構程式碼

6.條件判斷語句書寫方式的差異:

Laravel框架裡 if else判斷語句和foreach語句 書寫時必須以@if開頭@endif結尾,如果沒有則報語法錯誤,@foreach @endforeach同理;

TP框架則和PHP語法規則使用方式一致直接ifesle語句判斷和foreach迴圈遍歷

二.CSRF保護

CSRF跨站點請求偽造(CrossSite Request Forgery)

,跟XSS攻擊一樣,存在巨大的危害性,

防禦CSRF攻擊

       目前防禦 CSRF 攻擊主要有三種策略:驗證 HTTP Referer 欄位;在請求地址中新增 token 並驗證;在 HTTP 頭中自定義屬性並驗證。

(一)給模板分配變數

// 方法一

     /* return view('firstclass.index',['name'=>'Alice','number'=>123]);*/

 //方法二

       /* return view('firstclass.index')->with('name','Jerry')->with('password','123456');*/

 // 方法三

       $str1='welcome';

       $str2="Alice";

       return view('firstclass.index',compact('str1','str2'));

(一)基本路由註冊

// 路由註冊的方法還可以使用anymatch

Route::any('hello.html',function(){

return "hello !welcome";

});

Route::match(['get','post'],'b.html',function(){

return "hello !welcome";

});

1.可以在路由註冊中直接渲染模板,使用Route::get('x.html',function(){return view('x')})

2.給單一控制器註冊路由,在路由中只需要寫類名就可以,不需要寫方法名字,使用Route::get('unique.html','uniqueController');

注意,單一控制器的方法名字需要使用invoke()

3.controllers下面的資料夾裡面的控制器註冊路由,使用Route::get('login.html','home\[email protected]');

4.views下面包含的資料夾裡面的模板註冊路由使用Route::get('adminindex.html',function(){

return view('admin.index');

});

5. 給控制器裡面渲染的方法註冊路由,使用Route::get('first.html','類名@方法名');

(二)資料庫配置

  1》使用原生sql

1select 方法*/

       /*返回是二維陣列結果集,裡面都是php物件,不管在模板還是控制器都需要使用訪問物件的方式去訪問*/

 // $sql="select * from user";

      //$res=DB::select($sql);

      /*dump($res);*/

      // return view('SecondClass.index',['res'=>$res]);

     // 引數繫結的sql(使用佔位符):可以防止sql注入

     $sql="select * from user where class=:c ";

     $res =DB::select($sql,['c'=>"計科一班"]);

    /* return view('SecondClass.index',['res'=>$res]);*/

}

/*

 執行原生的sql語句新增,

config下面的app裡面設定預設時區'timezone' => 'PRC',*/

/*2insert方法*/

 public function add()

   {

$datatime=date('Y-m-d H:i:s',time());

$sql="insert into user (name,sex,age,class,school,registertime) values ('小花','',12,'計科一班','西安工程大學','$datatime')";

$res=DB::insert($sql);

dump($res);

   }

/*3)原生sql修改方法update*/

       /*返回受影響的行數*/

 public function update()

   {

$sql="update user set class='軟體工程1501' where name='筱筱'";

$res=DB::update($sql);

dump($res);

   }

/*4)原生sql刪除方法delete*/

       /*返回受影響的行數*/

public function delete()

   {

$sql="delete  from  user  where name='筱筱'";

$res=DB::delete($sql);

dump($res);

   }

/*5)資料庫事務*/

/**

*  transaction()自動實現事務

   您可以在 DB facade 上使用 transaction 方法,在資料庫事務中執行一組操作。如果在事務 Closure 中丟擲一個異常,那麼事務將自動回滾。如果 Closure 成功執行,事務將自動被提交。您不需要擔心在使用事務方法時手動回滾或提交。

   什麼是死鎖?

死鎖是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。

*/

 public function shiwu()

  {

          DB::transaction(function(){

          DB::update("update user set class='軟體工程1501' where name='羅志祥'");

          DB::delete("delete  from  user  where id='筱筱'");

       });

  }

 // 手動實現事務

 /*如果您想要手工開始一個事務,並且對回滾和提交有完全的控制,那麼您可以在 DB facade 上使用  beginTransaction 方法:

  DB::beginTransaction();

  您可以通過 rollBack 方法回滾事務:

  DB::rollBack();

  最後, 您可以通過 commit 方法提交事務:

  DB::commit();

*/

2》查詢構造器

/*(1)從資料表中獲取所有的資料列get()*/

   public function test()

   {

    $res= DB::table('user')->get();

    dump($res) ;

    }

   /* return view('SecondClass.index',['res'=>$res]); */

/*(2)從資料表中獲取單個列或行#*/

   public function first()

   {

$res= DB::table('user')->first();

    dump($res) ;

    return view('SecondClass.index1',['res'=>$res]);

   }

/*(3)對大資料的分塊處理chunk()方法,第一個引數代表每一次操作多少條資料*/

   public function chunk()

   {

 $res=DB::table('user')->orderBy('id')->chunk(2,function($class){

 foreach ($class as $k)

 {

echo $k->name;

 }

 return false;

 });

   }    

/*(4)聚合函式 count(),countmaxminavg sum*/

/*(5)指定一個 Select 子句*/

// 當然,你並不會總是想從資料表中選出所有的欄位。這時可使用 select 方法自定義一個 select 子句來查詢指定的欄位:

/*distinct 方法允許你強制讓查詢返回不重複的結果:*/

   public function Select()

   {

     $res=DB::table('user')->select('id','name','school')->distinct()->get();

     dump($res);

   }

/*(6)連線查詢join*/

  public function join()

  {

  $res=DB::table('score')

            ->join('user','score.id','=','user.id')

            ->join('course','course.cid','=','score.id')

            ->select('user.name','score.*')

            ->get();

 dump($res);

  }

/*(7)where子句*/

 public function where()

 {

  /*$res=DB::table('user')->where('id','6')->get();*/

 /* $res=DB::table('user')->where('id','>=','6')->get();*/

/* $res=DB::table('user')->where('name','like','%%')->get();*/

   /*  $res=DB::table('user')->whereIn('id',[1,4,6])->get();*/

  /*$res=DB::table('user')->whereBetween('id',[1,6])->get();*/

/*這個查詢適用於該欄位預設值為NULL且允許為空*/

  /* $res=DB::table('user')->wherenull('registertime')->get();*/

/*whereDate 方法比較某欄位的值與指定的日期是否相等:相應的還有: / whereMonth / whereDay / whereYear*/

 /* $res=DB::table('user')->wheredate('registertime','2018-04-19')->get();*/

/*orderBy排序,預設正序*/

 /* $res=DB::table('user')->orderBy('id','desc')->get();*/

/*groupby分組*/

      $res=DB::table('user')->groupBy('class')->avg('id');

  dump($res);

 }

}

(三)模型層的建立以及使用

 1》模型層的建立

   1》模型層的命名是(如果資料表的名字是複數形式)去掉s的名字.php

注意:如果資料表的名字並非複數,那麼需要在模型層的class裡面加一句:protected $table=””你的資料表的名字;

主鍵#

Eloquent 也會假設每個資料表都有一個叫做id 的主鍵欄位。你也可以定義一個 $primaryKey 屬性來重寫這個約定。

此外,Eloquent 假定主鍵是一個遞增的整數值,這意味著在預設情況下主鍵將自動的被強制轉換為 int。 如果你想使用非遞增或者非數字的主鍵,你必須在你的模型 public $incrementing 屬性設定為false

相關推薦

laravel框架基礎知識

一.TP5和Laravel框架的區別 區別:1、提交資料的方式,Laravel在提交表單時需要在表單中加入{csrf_field}來防止跨域攻擊,而TP不會。 2、路由,Laravel必須先定義,再使用,路由檔案為routes.php,TP在配置檔案中開啟路由後,路由格式是:

集合框架基礎知識-----java基礎知識

訪問 java集合框架 pan 至少 組成 常見 .get htable equals Java集合框架 :接口:Collection、List 、Set、 Map;實現類:ArrayList、LinkedList、Vector、HashSet、TreeSet、HashMa

ThinkPHP框架基礎知識

技術分享 創建 php col 代碼 amp mvc 項目 src ThinkPHP是一個PHP開發框架,使用面向對象的開發結構和MVC模式,簡稱tp框架。   1.框架是一堆代碼的集合,裏邊有變量、函數、類、常量,裏邊也有許多設計模式MVC、AR數據庫、單例等等,框架的作

PHP面試(二):程序設計、框架基礎知識、算法與數據結構、高並發解決方案類

表設計 工作原理 結構 單一入口 php 能力 高並發解決方案 數據表 缺點 一、程序設計 1、設計功能系統——數據表設計、數據表創建語句、連接數據庫的方式、編碼能力 二、框架基礎知識 1、MVC框架基本原理——原理、常見框架、單一入口的工作原理、模板引擎的理解 2、常見框

三分鐘輕松了解Spring框架基礎知識

xmla 深入 dao reference inject ace eve con 說過 做為一個合格的Java開發人員,你一定聽說過Spring框架,雖然會應用,但卻未必能夠深入理解框架的原理,只是像其它人一樣,泛泛的只是停留在理解的層面。小編會帶著大家一步步了解Sprin

DonkeyPHP框架-基礎知識準備

每一個框架都會有類自動載入,而每一個檔案都得自己去require,在php中有相應的方法spl_auto_register 與__autoload。兩者的區別如下 //__autoload用法 function __autoload($classname) { $filena

Vue框架-基礎知識(vue指令、例項生命週期、計算屬性與監聽屬性、插槽理解、元件介紹、資料互動、ES6語法等)

Vue.js 介紹 vue.js是當下很火的一個JavaScript MVVM庫,它是以資料驅動和元件化的思想構建的。相比於Angular.js,Vue.js提供了更加簡潔、更易於理解的API,使得我們能夠快速地上手並使用Vue.js。 什麼是MVVM模式?

linux下基於laravel框架基礎上安裝後臺管理系統laravel-admin(1.4)

1,首先需要安裝laravel框架(composer安裝). laravel框架和擴充套件均存放在composer依賴資源庫中,composer類似git庫。所以安裝laravel就必需先安裝composer。 Composer是一個PHP編寫的依賴資源管理器,需要PHP 5.3.2+才能執行(需要開啟o

laravel框架基礎(2)---laravel專案載入機制

當我們,通過瀏覽器請求laravel的時候 laravel就會根據我們的請求連結來選擇對應的方法執行並返回我們所需要的實際結果。 那麼這個過程是怎樣的呢? 1.生命週期 2018-12-28 17:03:52[作者:struggler]   首先當我們通過訪問laravel的時候,這個時候就會

Java之struts2框架基礎知識

struts2 struts2的寫法 Action類 public class HelloAction { public String hello() { System.out.println("Hello Struts!"

Django框架基礎知識彙總(有專案版)

Web框架本質 web系統概念 1. Http,無狀態,短連線 2. 瀏覽器(socket客戶端)、網站(socket服務端) web框架本質 import socket def handle_request(client

Shiro框架基礎知識歸納

1、URL基本配置:其格式URL=攔截器[引數],攔截器[引數];例如: /login.jsp = anon  anno:(anonymous)攔截器表示匿名訪問(即不登入即可訪問)。authc:(authentication)攔截器表示需要身份認證後才能訪問。URL配

RF框架基礎知識(二)

使用下標 util index space 區分 dbutil ole date requests • 工程結構• Project工程• TestSuite測試套件• TestCase測試案例•

Flask框架基礎知識講解

數據庫操作 ref bin 講解 art log 數據 導入 blog Flask框架基礎知識講解 第一章: 框架簡介 第二章: 虛擬環境安裝和使用 第三章:鄭重的寫下Hello World! 第四章:HTTP協議和FLASK請求 第五章:結構化拆分和循環導入 第六章:解

laravel 基礎知識總結

arr -c rem 條件 -type 存在 line 網站 int 1.請求類型 get , put , post , patch , delete 等 2.路由訪問方式 get , post , any , match([‘get‘,post]) 3.路由傳參 Rout

Hadoop學習筆記—15.HBase框架學習(基礎知識篇)

dfs hdfs keep 負載均衡 包含 兩個 列族 文件存儲 version HBase是Apache Hadoop的數據庫,能夠對大型數據提供隨機、實時的讀寫訪問。HBase的目標是存儲並處理大型的數據。HBase是一個開源的,分布式的,多版本的,面向列的存儲模型,它

GOF-Java基礎知識和J2EE框架知識之間一座隱性的"橋"

成了 由於 stat 23種設計模式 轉化 語言 構造 調整 通知 2018-1-14 by Atlas 聲明:設計模式趣解部分內容收錄自百度百科GOF詞條,僅供個人學習和備忘。原文連接:GOF百度百科詞條 關於23種設計模式的有趣見解 首先我想表達一下根據自己的認知和

jQuery框架-1.基礎知識

尺寸 制作 反向 奇數 mage data 索引 快速實現 last jQuery簡介 jQuery,顧名思義是JavaScript和查詢(Query),jQuery是免費、開源的。它可以簡化查詢DOM對象、處理事件、制作動畫、處理Ajax交互過程且兼容多瀏覽器的java

Java基礎知識(JAVA集合框架之List與Set)

開發 如果 表數 特點 必須 加鎖 以及 stringbu 不可 List和Set概述數組必須存放同一種元素。StringBuffer必須轉換成字符串才能使用,如果想拿出單獨的一個元素幾乎不可能。數據有很多使用對象存,對象有很多,使用集合存。 集合容器因為內部

基礎知識漫談(3) 組合基礎知識,設計遊戲框架 如何讓畫面動起來?

如何讓畫面動起來? 都知道動畫的原理,想想看跑馬燈,在任意時刻把跑馬燈按停,面對眼睛的那附圖,它叫做幀(Frame)。 幀,就是一串兒連貫動畫裡的單個截面。 玩兒遊戲的人知道,要達到基本流暢的水準,30fps(frame per second)就夠了,達到毫無察覺的流暢,可能要到60fp