初學Laravel框架與ThinkPHP框架的不一樣

做爲一個PHP菜鳥初學Laravel框架 在學習過程當中我發現了其與TP框架的不一樣點,因爲時間問題和認識還不夠完善我先寫出其中幾點,有錯誤的地方但願各位大牛斧正...      php

    1.渲染模版方式的不一樣:在Laravel框架裏,使用return view()來渲染模版;而ThinkPHP裏則使用了$this->display()的方式渲染模版;laravel

    2.在實際開發中咱們經常遇到這樣的問題,就是開發地點不固定,這就形成了咱們須要頻繁的更改數據庫配置,給開發工做形成了麻煩,TP依然沒有避免這個"災難";在laravel框架中,.env環境文件的出現解決了這個麻煩,咱們只須要在不一樣的工做地點配置好.env文件就不避再進行配置,由於不管是git仍是svn " .env是不會隨着文件一塊兒提交到服務器的";git

    3.Laravel框架提供了大量的閉包,做爲菜鳥的我目前只使用了use方法,即如何在函數內部使用外層變量github

    

    

    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:字段名等大量的方法極大的提升了開發速度;安全

    

    代碼有待完善  只是實驗用bash

    7.加密方式服務器

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

 

在通過了一段時間的開發後,我對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

相關文章
相關標籤/搜索