首頁  >  文章  >  php框架  >  laravel與thinkphp差別是什麼

laravel與thinkphp差別是什麼

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼原創
2019-11-11 10:56:0810705瀏覽

laravel與thinkphp差別是什麼

1、渲染模版方式的不同

在Laravel框架裡,使用return view()來渲染模版;而ThinkPHP裡則使用了$this->display()的方式渲染模版。

2、在實際開發中我們常常遇到這樣的問題,就是開發地點不固定。

這就造成了我們需要頻繁的更改資料庫配置,這給開發工作造成了麻煩。 TP依然沒有避免這個"災難",在laravel框架中,.env環境文件的出現解決了這個麻煩。我們只需要在不同的工作地點配置好.env檔案就不避再進行配置,因為無論是git還是svn,「.env是不會隨著檔案一起提交到伺服器的」。

3、Laravel框架提供了大量的閉包

作為菜鳥的我目前只使用了use方法,即如何在函數內部使用外層變數。

4、post傳值中註意點不同

在Laravel框架裡,由於其考慮到了跨站攻擊,所以如果使用form表單以post方式進行傳值時,如果不再form表單中加入{{csrf_field()}}則會報出TokenMethodnotfound的語法錯誤,而TP框架則需要自行手動完成防止跨站攻擊的程式碼。

5、條件判斷語句書寫方式的差異

Laravel框架裡if else判斷語句和foreach語句,書寫時必須以@if開頭,以@endif結尾。如果沒有則報語法錯誤,@foreach @endforeach同理;而TP框架則和PHP語法規則使用方式一致,直接用if esle語句判斷和foreach循環遍歷。

6、Laravel內建了大量的方法供開發者使用

#在實際應用中更接近"讓物件完成一切"的開發思想,例如在後台表單驗證的時候,Laravel內建了大量的驗證方法。例如使用者名稱的驗證:我們可以使用validate方法裡'username'=>'required'(不能為空)|alpha_dash(必須數字字母下劃線)|between:6,18(在多少位數之間);也內建了例如email;same:欄位名稱;diff:欄位名稱等大量的方法極大的提高了開發速度。

7、加密方式

在TP框架中,我們對使用者名稱密碼進行加密時使用md5();的方式進行加密。但md5的缺點在於其可以逆向破解,而且在同等規則下同樣的密碼md5加密出的字串是有可能出現相同的,這就降低其安全性。但在Laravel框架中內建了"哈希"Hash加密單向加密方法,且同樣的參數加密出的字串是絕對不會出現相同的情況,這就提高了安全性。

8、建表

Laravel在資料庫建表上有自己獨立內建的結構,可以完全不用藉助原生SQL語句或SQLyogEnt、Navicat這樣的建表工具進行資料庫的建立,增刪改查和資料互動。我想這可能是它牢牢佔據NO.1的一大亮點,在ThinkPHP中則需要我們藉助SQL語句或是建表工具去逐步完善資料。

8.1、首先我們需要建立模型:我用的是gitbash。 gitbash是Windows下的命令工具,基於msys GNU環境,有git分散式版本控制工具,主要應用於git。但在Laravel裡也可以直接使用:php artisan make:model Models/GoodsModel -m 完成模型的建立與建表結構的建立(/database/migrations)。

8.2、向goods數據表填充數據,要注意數據的類型是嚴格區分的,並且一定要加。新增後使用php artisan migrate指令完成表格的建立。

Schema::create('goods', function (Blueprint $table) {

$table->increments('id')->comment('商品主鍵');

$table->string('title')->comment('商品的標題');

8.3、假設某個欄位不符合要求或需要新增欄位怎麼辦?無須擔心,從github中pull下專案後在資料表裡直接修改,只需要用:

php artisan migrate:refresh

9、ORM

在介紹建表時已經使用了創建模型的命令:

php artisan make:model  XXX;

Laravel裡模型是對物件導向開發思想最好的詮釋,讓物件幫我們完成需求。

摘自5.1手冊:(Laravel 的Eloquent ORM 提供了漂亮、簡潔的ActiveRecord 實作來和資料庫進行互動。每個資料庫表都有一個對應的「模型」可用於跟數據表進行互動。你可以透過模型查找數據表內的數據,並將記錄添加到數據表中。)

本人在實際使用中也實實在在的感受到了透過創造模型對數據表操作帶來的便利,譬如:批量賦值,跨表查詢,刪除模型和軟刪除,模型關聯,當然這些在TP框架中也可以利用模型實現。這一點屬於仁者見仁智者見智,根據個人喜好而定。

10、session的用法

#

10.1、ThinkPHP對Session操作進行了封裝,並且無需引入就可以使用,Session的啟動會在應用初始化的時候自動執行,所以無需手動使用Session::start() 來啟動Session。

使用Session類別操作和普通方式呼叫$_SESSION來操作並沒有本質不同,只是Session類別很多參數可以根據專案配置來靈活設置,最常用的操作方法範例: 

#/ / 偵測Session變數是否存在:Session::is_set('name');  

// 給Session變數賦值:Session::set('name','value');

# // 取得Session變數:Session::get('name');

10.2、Laravel中Session的常用方法:

$request->session()->get( 'key');//取得session裡的某個鍵名

$request->session()->set('key','default');//設定一個預設值,當指定鍵名不存在便傳回預設值

$request->session()->all();//傳回所有資料

session('k'=> ;$v);//寫入session保存資料

以及閃存資料session()->flash()和保留特定資料->keep(['','']);

也可以自訂session驅動程式。

php中文網,大量的免費laravel入門教學,歡迎線上學習!

以上是laravel與thinkphp差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn