初學Laravel框架與ThinkPHP框架的不同


作為一個PHP菜鳥初學Laravel框架 在學習過程中我發現了其與TP框架的不同點,由於時間問題和認識還不夠完善我先寫出其中幾點,有錯誤的地方希望各位大牛斧正...      

    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語法規則使用方式一致直接ifesle語句判斷和foreach循環遍歷

    

    6.Laravel里內置了大量的方法供開發者使用,在實際應用中更接近於"讓對象完成一切"的開發思想,比如在后台表單驗證的時候,Laravel內置了大量的驗證方法,例如對用戶名的驗證:我們使用可以validate方法里'username'=>'required'(不能為空)|alpha_dash(必須數字字母下划線)|between:6,18(在多少位數之間);還內置了例如email;same:字段名;diff:字段名等大量的方法極大的提高了開發速度;

    

    代碼有待完善  只是實驗用

    7.加密方式

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

 

在經過了一段時間的開發后,我對Laravel框架的認識又在逐步的加深,對於這個世界占有量NO.1的框架...  我想說,我已經在逐步的感受到他的恐怖之處...

   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命令完成表的創建;可以自行YY下 多表同時創建的那種"還有誰"的感覺;

Schema::create('goods', function (Blueprint $table) {
$table->increments('id')->comment('商品主鍵');
$table->string('title')->comment('商品的標題');

    

    8.3.假設某個字段不符合要求或者需要添加字段怎么辦,無須擔心,從github中pull下項目后在數據表里直接修改  只需要用php artisan migrate:refresh

    ,然后今天的工作結束后push到github庫里,其他小伙伴在更新后就可以直接使用新的數據表結構,而且還可以看到更改記錄...這是開發者的一大福音~~

  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驅動

  轉自:麥先生     博客地址:http://www.cnblogs.com/maixiansheng


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM