php開發面試題---lavarel和tp的區別是什么(嘔心整理)


php開發面試題---lavarel和tp的區別是什么(嘔心整理)

一、總結

一句話總結:

反思的回顧非常有用,因為決定了我的方向和技巧
以戰養己,這是非常非常好的方式
主要從大小、功能、安全性、操作等方面分析

 

1、lavarel的優點有哪些?

1、火:全球第一php框架,功能強大,社區活躍
2、巨匠型開發框架:Lavavel一直秉承着優雅的原則,很好的支持了composer,實現了更豐富的擴展,社區文檔活躍,相較於TP,Lavavel更龐大,安全性也更高,更適合開發大中型項目,被稱為“巨匠型開發框架”。

 

2、tp的優點有哪些?

1、國人開發,中文文檔,入門簡便,適合中小型項目
2、ThinkPhp簡單、快速,基於MVC和面向對象,易用性較高,是一款簡潔實用的輕量級框架。

 

3、lavarel和tp的區別是什么?

大小:tp輕量級,lavarel巨匠型
功能:lavarel更強大,也更大,比如tp里面就沒有廣播
安全性:防csrf攻擊
操作:1、路由;2、中間件 與 前置操作和鈎子

Laravel 在請求需要先定義路由,Tp5可以不定義,有pathinfo路由即可訪問。
Laravel 在請求之前會有中間件, Tp5會有前置操作和鈎子。

 

 

 

二、Laravel 和 Tp5的一些區別

1.0 Laravel 在表單提交的時候會有csrf 跨站請求偽造驗證,Tp5則沒有。
2.0 Laravel 在請求需要先定義路由,Tp5可以不定義,有pathinfo路由即可訪問。
3.0 Laravel 在請求之前會有中間件, Tp5會有前置操作和鈎子。

 

參考:Laravel 和 Tp5的一些區別 - 簡書
https://www.jianshu.com/p/03e4ac7e3fa3

 

四、參考:laravel與TP的區別

1、TP框架:

ThinkPhp簡單、快速,基於MVC和面向對象,易用性較高,是一款簡潔實用的輕量級框架。

2、Laravel框架:

     Lavavel一直秉承着優雅的原則,很好的支持了composer,實現了更豐富的擴展,社區文檔活躍,相較於TP,Lavavel更龐大,安全性也更高,更適合開發大中型項目,被稱為“巨匠型開發框架”。

個人感覺TP5和Laravel框架的區別已經很小了,相較於TP3,TP5支持了composer安裝,配置文件位置變化,支持了閉包函數,驗證方式也跟Lavarel相似,數據返回方面也可以使用return進行數據返回。

3、區別

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

2)路由,Laravel必須先定義,再使用,路由文件為routes.php,TP在配置文件中開啟路由后,路由格式是:'路由表達式' => '路由地址和參數'(使用路由的前提是URL支持phthinfo並且開啟路由),路由可以使URL更符合SEO。

3)中間件,Laravel的中間件,中間件就是HTTP請求到達之前經過的層,通過中間件我們可以驗證用戶是否登錄等一些通用操作。

4)操作數據庫方式,都可以使用實例化(建立相對應的模型類)和DB:table('表名')來操作數據庫,使用原生查詢時不太相同,Laravel使用Db::操作('原生sql'),TP使用Db::query('原生sql');

5)Laravel升級十分簡易,而TP大版本的升級要重構代碼。

 

Laravel最大的強項是充分運用了PHP面向對象的特行和軟件工程的思想,是一個幾近解耦的框架(它引入了各種各樣的設計模式,如IOC模式、以來注入等)。

 

參考:laravel與TP的區別 - Rerise的博客 - CSDN博客
https://blog.csdn.net/jiangnanqbey/article/details/80860156

 

五、 TP與laravel簡介

1、Tp

 

ThinkPHP是一個快速、簡單的基於MVC和面向對象的輕量級PHP開發框架,遵循Apache2開源協議發布,從誕生以來一直秉承簡潔實用的設計原則,在保持出色的性能和至簡的代碼的同時,尤其注重開發體驗和易用性,並且擁有眾多的原創功能和特性,為WEB應用開發提供了強有力的支持。 3.2版本的服務器環境要求如下: PHP5.3以上版本

 

2、Laravel

 

Laravel是一個簡單優雅的PHP Web開發框架,可以將開發者從意大利面條式的代碼中解放出來,通過簡單、高雅、表達式語法開發出很棒的Web應用,Laravel擁有更富有表現力的語法、高質量的文檔、豐富的擴展包,被稱為“巨匠級PHP開發框架”。 laravel框架的安裝滿足條件:

 

PHP版本 >= 5.5.9

 

PHP擴展:OpenSSL

 

PHP擴展:PDO

 

PHP擴展:Mbstring

 

PHP擴展:Tokenizer

 

Laravel需要依賴 Composer管理,必須首先安裝Composer。

 

二、tp與laravel的目錄結構

 

1、TP目錄結構:

├─index.php 入口文件

├─README.md README文件

├─Application 應用目錄

├─Public 資源文件目錄

└─ThinkPHP 框架目錄

核心代碼目錄:

├─ThinkPHP 框架系統目錄(可以部署在非web目錄下面)

│├─Common 核心公共函數目錄

│├─Conf 核心配置目錄

│├─Lang 核心語言包目錄

│├─Library 框架類庫目錄

││ ├─Think 核心Think類庫包目錄

││ ├─Behavior 行為類庫目錄

││ ├─Org Org類庫包目錄

││ ├─Vendor 第三方類庫目錄

││ ├─ ... 更多類庫目錄

│├─Mode 框架應用模式目錄

│├─Tpl 系統模板目錄

│├─LICENSE.txt 框架授權協議文件

│├─logo.png 框架LOGO文件

│├─README.txt 框架README文件

│└─index.php 框架入口文件

① C層放在application/home/controller中,M層在application/home/model,視圖放在application/home/view中。

② Tp里面使用的模板引擎是smarty,所以傳值以及調用模板為assign和display。

③ 實現了模板輸出的替換和過濾,如__APP__,__MODULE__,__URL__,__PUBLIC__等

④ 自帶一些緩存的方法,如S (數據緩存) F(快速緩存) cache(查詢緩存)以及靜態緩存

⑤ 對網站安全性有多重防護,輸入過濾(I方法)、上傳安全、防止XSS攻擊、防止sql注入、表單合法性檢測(create方法創建數據對象的時候,可以使用數據的合法性檢測,可以使用insertFields 和 updateFiel

ds屬性或者field方法)等

⑥ ThinkPHP提供了靈活的全局配置功能,采用最有效率的PHP返回數組方式定義,支持慣例配置、公共配置、模塊配置、調試配置和動態配置,分別講述了在Apache、IIS、和nginx上的偽靜態配置。‘⑦ thinkphp 也采用了命名空間的方法用來區分每個文件

⑧ 在ThinkPHP中基礎的模型類就是Think\Model類,該類完成了基本的CURD、ActiveRecord模式、連貫操作和統計查詢,一些高級特性被封裝到另外的模型擴展中。

⑨ 基礎模型類的設計非常靈活,甚至可以無需進行任何模型定義,就可以進行相關數據表的ORM和CURD操作,只有在需要封裝單獨的業務邏輯的時候,模型類才是必須被定義的。

⑩ ThinkPHP有專門為開發過程而設置的調試模式,開啟調試模式后,會犧牲一定的執行效率,但帶來的方便和除錯功能非常值得。

11  tp中session使用的非常靈活在任何頁面都能夠隨意調取,不需要重復的引入,只需要開啟一次session可以了。 tp中不需要反復的寫路由tp框架的s ession機制在配置中文件中配置好就可以用

12 使用系統內置的I函數是避免輸入數據出現安全隱患的重要手段,I函數默認的過濾方法是htmlspecialchars,如果我們需要采用其他的方法進行安全過濾,有兩種方式:

+-------------------------------------------------------------------------+

 

| 'DEFAULT_FILTER'        => 'strip_tags'

 

| 'DEFAULT_FILTER'        => 'strip_tags,stripslashes',

 

+--------------------------------------------------------------------------+

 

13如果你沒有使用I函數進行數據過濾的話,還可以在模型的寫入操作之前調用filter方法對數據進行安全過濾,

 

如 $this->data($data)->filter('strip_tags')->add();

 

  2、Laravel目錄:

app目錄包含了應用的核心代碼;

 

bootstrap目錄包含了少許文件用於框架的啟動和自動載入配置,還有一個cache文件夾用於包含框架生成的啟動文件以提高性能; config目錄包含了應用所有的配置文件;

 

database目錄包含了數據遷移及填充文件,如果你喜歡的話還可以將其作為 SQLite 數據庫存放目錄;

 

public目錄包含了前端控制器和資源文件(圖片、JavaScript、CSS等);

 

resources目錄包含了視圖文件及原生資源文件(LESS、SASS、CoffeeScript),以及本地化文件;

 

storage目錄包含了編譯過的Blade模板、基於文件的session、文件緩存,以及其它由框架生成的文件,該文件夾被細分為成app、framework和logs子目錄,app目錄用於存放應用要使用的文件,framework目錄用於存放框架生成的文件和緩存,最后,logs目錄包含應用的日志文件;

 

tests目錄包含自動化測試,其中已經提供了一個開箱即用的PHPUnit示例;

 

vendor目錄是laravel的核心代碼庫,包含Composer依賴;

 

M層放在在app下面,不用再給專門的文件夾,app/Http下面有個routes.php,專門存放路由,每個控制器里的方法必須都要有,app/Http/Controller下面放的是控制器,resources/views下面放的是模版,以.blade.php為結尾。配置數據庫信息可以直接在。Env文件中修改就可以了。

 

①laravel框架對環境有要求,5.2版本的laravel要求php5.5.9以上,還要開一些擴展。

②在瀏覽器中請求的路由通過app/Http/routes.php進行解析,在進入相應的控制器方法,有get、post、any、match等一些方法③傳值、調用模板return view('user.profile', ['user' => $user]);

④設置session值:默認session只能在本方法中獲取,可以在app/Http/kernel.php設置。

+-------------------------------------------------------------------------+


| session(['chairs' => 7, 'instruments'=> 3]);

| session()->get('key');session()->put('key', $value);session(‘key’)


+--------------------------------------------------------------------------+

也可以用$request->session()->get()/put()設置

Laravel的session的配置文件配置在app/config/session.php中session的永久保存(在不過期范圍內)Session::put('key', 'value');

Session驅動(file,cookie,database,memcached,array)

配置文件為config/session.php

默認使用文件驅動

File session數據存儲在storage/framework/session目錄下

Cookie session數據儲存在經過加密的cookie中

Database session數據儲存在數據庫中
Memcached/redis session數據存儲在memcached/redis中
Array session數據存儲在簡單地數組中,非持久化(常用於運行測試)

⑤在AppServiceProvider中使用share方法可以是所有模板共享數據
⑥{{ $a}}是內置的輸出數據的方法,默認被轉義,可以使用{!!$a!!}輸出原本代碼而不會被轉義
⑦@foreach @endforeach @if @elseif @else @endif
⑧模板繼承可以在視圖中使用同一個主模板,節省代碼,方便管理
⑨數據庫操作可以使用原生sql語句也可以使用查詢構建器

 

三、Laravel與Tp的路由
1、laravel路由
laravel必須先定義路由,所有應用路由都定義在app/Http/routes.php文件中。
默認情況下,routes.php 文件包含單個路由和一個路由群組,該路由群組包含的所有路由都使用了中間件組 web,而這個中間件組為路由提供了 Session 狀態和 CSRF 保護功能。
而thinkphp中開啟路由:“URL_ROUTER_ON”=true;
路由規則的定義格式為: '路由表達式'=>'路由地址和參數'。 2、TP路由
要使用路由功能,前提是你的URL支持PATH_INFO並開啟路由路由規則的定義格式為: '路由表達式'=>'路由地址和參數'

 

四、Laravel與Tp基本配置與視圖以及Laravel的中間件

1、laravel視圖

視圖文件存放在 resources/views 目錄

判斷視圖是否存在用 view()->exists() 在所有視圖之間共享數據片段,這時候可以使用視圖工廠的share方法,通常,需要在服務提供者的boot 方法中調用 share 方法,你可以將其添加到 AppServiceProvider 或生成獨立的服務提供者來存放它們:

 

2、數據顯示

Blade 的 {{}} 語句已經經過 PHP 的htmlentities 函數處理以避免 XSS 攻擊。 Blade 的 @include 指令允許簡單的在一個視圖中包含另一個 Blade視圖,可以傳遞參數到被包含的視圖@include('view.name', ['some' => 'data'])

 

3、Tp視圖

賦值assign調用頁面display

在當前模版文件中包含其他的模版文件使用include標簽,Include標簽支持在包含文件的同時傳入參數
 

4、laravel基本配置

Laravel框架的所有配置文件都存放在 config 目錄下。

.env中的所有配置及其值被載入到 PHP 超全局變量 $_ENV 中

5、Tp配置::
公共配置文件(默認位於Application/Common/Conf/config.php)。獲取已經設置的據庫連接 參數值:C('參數名稱')

 
6、laravel的中間件

Laravel框架自帶了一些中間件,包括維護模式、認證、CSRF保護中間件等。所有的中間件都位於app/Http/Middleware 目錄下。

可以將中間件看做 HTTP 請求到達目標動作之前必須經過的“層”,每一層都會檢查請求並且可以完全拒絕它。分配中間件到路由

首先應該在 app/Http/Kernel.php 文件中分配給該中間件一個簡寫的 key,默認情況下,該類的 $routeMiddleware 屬性包含了 Laravel 內置的入口中間件,添加你自己的中間件只需要將其追加到后面並為其分配一個 key:

中間件在 HTTP Kernel 中被定義后,可以在路由選項數組中使用 $middleware 鍵來指定該中間件: Route::get('admin/profile', ['middleware' => 'auth', function (){ // }]);
 

五、Laravel與Tp數據庫

1、laravel數據庫

Laravel 支持四種類型的數據庫系統:MySQLPostgres SQLite SQL Server 可以配置讀寫分離

運行原生 SQL 查詢

DB方法:select, update,insert, delete, 和statement。數據庫事務所有的填充類都位於database/seeds目錄

在run方法中,可以插入任何你想插入數據庫的數據

可以使用 Artisan 命令db:seed來填充數據庫

2、Tp數據庫

目前的數據庫包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括對PDO的支持。

六、 Laravel與Tp的防范機制

 

 

參考:TP與laravel簡介 - 少昊 鷹 的 IT博客 - CSDN博客
https://blog.csdn.net/qq_33620483/article/details/78062502

 
 
 


免責聲明!

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



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