導航:首頁 > 編程語言 > php移動框架

php移動框架

發布時間:2023-02-17 19:28:31

php常用的框架有哪些

PHP常用框架有:

1.thinkphp: 國人開發, 文檔比較全,中文文檔。 入門比較簡單。 寫法快。

2. laravel : 國外人寫的, 入門門檻高。英語文檔 ,社區比較活躍。

3. symfony: 國外人寫的。 門檻比較高, 英語文檔。

4. yii: 國內人寫的,門檻較低。

想學習這些框架,可以去黑馬程序員看視頻,有thinkphp、laravel的框架學習視頻。

⑵ php有哪些框架

PHP的框架有很多,這里說一部分供大家參考:

國內框架:ThinkPHP, Canphp, KYPHP, InitPHP, SpeedPHP, CdvPHP,KPHP。

國外著名框架:Zend Framework,Codelgniter,CakePHP,Symfony,Yii,Seagull,Laravel。

小型框架:E,DuoLamPHP,Difeye,GalaxixPhp,PhpPeanuts,Rong Framework,Openbiz Framework。

⑶ php開發需要框架嗎

什麼是PHP開發框架?
有太多的原因使得PHP成為世界上最受歡迎的腳本語言——高度靈活、簡單易用——不過寫PHP(或者任何這種語言)代碼時,人們常常陷入單調重復而令人生厭的體力活動的窘境。而這正是PHP開發框架大顯身手的地方。
通過提供一個開發Web程序的基本架構,PHP開發框架把PHPWeb程序開發擺到了流水線上。換句話說,PHP開發框架有助於促進快速軟體開發(RAD),這節約了你的時間,有助於創建更為穩定的程序,並減少開發者的重復編寫代碼的勞動。這些框架還通過確保正確的資料庫操作以及只在表現層編程的方式幫助初學者創建穩定的程序。PHP開發框架使得你可以花更多的時間去創造真正的Web程序,而不是編寫重復性的代碼。
PHP開發框架背後的思想被稱為「模型—視圖—控制器」(MVC)。MVC是這樣一種架構模式,它隔離了業務邏輯與UI,允許其一改變而另一者不受影響。(也可以說是關注點的隔離)在MVC中,模型負責數據,視圖負責表現,控制器則是程序主體或者說是負責業務邏輯。從本質上說,MVC拆分了一個程序的開發過程,這樣你就可以修改獨立的每一部分,而其他部分不受影響,這是十分重要的,它使得編寫PHP代碼更為快捷簡單。
為什麼要使用PHP開發框架?
開發者可能出於不同的考慮而使用PHP開發框架,不過首當其沖的原因是為了加速開發過程。相似工程之間的代碼重用能夠節省開發者大量的時間和精力。PHP開發框架內置了預建的模塊,免去了冗長又令人厭煩的編程工作。這樣開發者就能夠把時間活在開發實際程序上,而不是每一次都要為每一個項目重建基礎模塊。
穩定性是開發者使用框架的另一個重要原因。盡管簡單是PHP最大的資本,也是許多人喜愛這個腳本語言的原因,它也是PHP的「潘多拉之盒」,尤其是那些初學者而言,PHP是如此的簡單以至於他們會完全沒有意識地寫出低質量的代碼。這樣的PHP程序可能在大多數時間內仍正常工作,但你可能已在代碼中留下了巨大的安全漏洞,使其易受攻擊。要時刻牢記PHP是一門很寬松的語言十分重要,因此確保不在代碼中遺留任何安全漏洞是重中之重——即使程序看起來工作正常。
最後一點,PHP開發框架是可擴展的,並且有許多框架可供選擇。你也可以創造你自己的,不過許多開發者決定從那些流行的知名的開發框架中做選擇,因為它們往往有著龐大的支持團隊,以及相關的論壇/社區方便你與其他使用同一個框架的開發者相互交流。注意,你應當事先檢驗你的項目是否需要使用框架,這里提供一份簡單的列表以供參考:使用框架能否節省你(和其他任何會使用它的人)的時間和精力?是否能夠讓程序得到更好的表現?能否提高穩定性?如果你對上面任何一個問題的回答是肯定的,那麼使用PHP開發框架對於這個項目就可能是正確的選擇。
何時使用PHP開發框架?
這是開發者,無論初學者還是經驗豐富的專家,常常詢問的問題,但又真的沒有直截了當的答案。對於許多初學者而言,框架提供了良好的穩定性和簡潔性,所以他們認為只要能用就應該用框架。它能夠減少低質量代碼的產生,並加快項目進度。
另一方面,許多經驗豐富的PHP程序員把框架視為那些不懂得如何寫出高質量的清晰的代碼的「初級」程序員而設計的工具。這句話對錯與否有待商榷,但事實上PHP開發框架的確是用來節省時間和提高編程效率的工具。
在忙於接近最後期限的工程時,使用PHP開發框架將帶來巨大的效益,因為它能夠極大地加快編程進度。所以如果你時間緊迫,使用PHP開發框架是極其正確的。應當把PHP開發框架列入考慮范圍的另一個例子是當你忙於一個有大量重復代碼的項目時,因為它有助於減少重復工作量。
在PHP開發框架中應當關注什麼?
去搜索PHP開發框架的人將會看到各式各樣的選擇,你甚至可以創建你自己的,盡管只推薦PHP專家們這么做。在尋找最適合你需求的PHP開發框架時,你要時刻想著誰會使用和/或徹頭徹尾地修改它,這點很重要。如果會有許多人使用這個程序,最好用一個大多數開發者都熟悉的框架。另一方面,如果你想要一個自己使用的Web程序,你最好選擇一個你覺得最舒服的PHP開發框架——管它是流行還是不受歡迎呢。
在尋找PHP開發框架時應該考慮多種因素:簡單易用,敏捷開發/性能,在其它開發者中間的流行程度,強大的特性,以及支持/論壇。我推薦你先嘗試幾款不同的PHP開發框架,從中找出一個最適合你需求的,各種框架之間有些微的差異,有著不同的優勢和劣勢。就拿Zend Framework來說,V3版本之後就帶有了豐富的功能,再加上一個可擴展的支持系統,這一切都是因為它存在了足夠久。作為對照,CakePHP是另一個比Zend Framework年輕的PHP開發框架,它的支持系統的規模就略微小些(盡管對這個框架的支持正在飛速增長),但CakePHP更加用戶友好且簡單易用。
如你所見,每種PHP開發框架都有它自己的有點,所以最好先做一些嘗試,捕捉一些錯誤以便找出哪個框架能最好地服務於你的需求。另一種很好的選擇框架的方式是咨詢你那些身處開發者社區的同事,問問他們喜歡哪個。那些真正用過某個框架的人會告訴你它是否易用,特性,可用的支持,框架周邊的社區所涉及的領域,他們還可能告訴你它的缺點。
使用PHP開發框架時最常見的錯誤
任何一種類型的編程都會出現錯誤,不過PHP開發框架能夠極大地限制這些錯誤的產生,因為它從開發過程的一開始就提供了經過驗證的正確代碼。而且看來重復的代碼編寫會增加錯誤出現的概率,而框架徹底解決或至少減少了那個問題。
這就是說,使用PHP開發框架仍然又需要注意的問題。例如,除非你是個PHP專家,否則你應該選擇一個流行些的框架,它們有著豐富的支持和一定的活躍用戶基數(下面會列舉一些流行的PHP開發框架)。有許多框架只有少得可憐的支持甚至沒有支持,並且/或者是由對PHP了解有限的人創建的。這些框架會導致你的程序不能正常工作,更壞的情況下會導致你的網站出現災難性的安全問題。
另一種常見的錯誤是沒有確保資料庫和網站伺服器兼容特定的框架。例如Seagull PHP Framewor推薦如下配置:
PHP: PHP 4.3.0 是最低配置,之後的版本也支持,PHP 5.1.1 及更高版本也可以。請避免任何 5.0.x 系列的東西。
MySQL: MySQL 4.0.x, 4.1.x 和 5.0.x 都支持,你也可以使用 3.23.x。
Apache: Seagull 在 1.3.x and 2.x 系列的 Apache 中工作得很好。
如果你不能滿足這些要求,你就不能得到所選擇框架可能的最佳性能。就算你是PHP專家,也應該在嘗試框架之前閱讀其文檔以確保兼容性。
和上面這個錯誤比較類似的,不按照推薦安裝步驟去安裝你的PHP開發框架也會給你帶來令人頭痛的煩惱。仍然用Seagull作為例子——Seagull的Wiki上有一份詳細的框架安裝流程,其中有幾個關鍵步驟有時候常常被粗心或者沒有戒心的開發者輕易地忽略了。關鍵是你一次就把框架裝好會讓你在接下來的實際開發中節約不必要的時間開銷。

⑷ 國內常用的PHP框架有哪些

有以下幾種:Canphp,KYPHP,SpeedPHP

⑸ 什麼是php框架是跟織夢CMS,phpCMS,帝國一樣么

框架就是一個半成品,幫助我們完成了項目的一部分,框架裡面有我們需要的類文件,要什麼功能我們只需要調用這個方法就行了。比如驗證碼功能,我直接掉用框架裡面的驗證碼的這個類就行了,不需要自己去寫了。但是具體的功能還是沒有完成,你的自己寫,框架只是完成大體的結構性的部分剩下70%的具體功能是自己寫的。但是CMS就是很完善的,就是光剩下模板沒有換了。所以我覺得還是有本質區別的。

⑹ PHP 微型框架有什麼好的推薦嗎

1. Cake PHP
\

CakePHP是一個擁有極大靈活性的開發,維護和部署的快速開發框架。使用非常常見的MVC和ORM設計模式,及其配置規則幫助大家簡化開發過程而無須開發過多的代碼

和ZF類似,CakePHP不要求配置。使用簡單。在IRC上擁有非常友好的社區#cakePHP,用來幫助新的用戶快速開始學習。基於MIT License,擁有最佳實踐,例如,安全,認證和session處理。擁有面對對象的方式幫助你更簡單的使用。

源代碼

2. Yii Framework
\

Yii是一個免費,開源的web應用開發框架,使用PHP5開發,幫助開發干凈,簡潔的設計並且鼓勵開發開發。它幫助流水化的開發應用,並且保證高效,可擴展和易維護。性能極大的優化,非常適合開發任何類型的產品和項目。然而,它內建復雜,企業級別的應用。你擁有完整的控制,包括表現層和持久層,符合了企業級別開發的指導方針

源代碼

3. Zend
\

Zend Framework 2 是一個使用PHP5.3+來開發web應用和服務的開源框架。使用100%的面對對象的代碼並且使用PHP5.3種的新特性,例如名字空間,late static binding,lamda function和closure。Zend framewok 2 由成功的PHP框架Zend Framework 1演變而來,而Zend framework 1擁有1500萬的下載量。Zend framework2擁有獨特的組件結構,每一個組件都設計的盡量少和其它組件產生依賴關系。 ZF2遵循了嚴格的面對對象的設計原理。這種非嚴格的組件關系結構允許開發人員使用任何他想使用的組件。

源代碼

4. Symfony
\

Smyfony是一個web應用框架,遵循了典型的MVC(model view controller)的設計結構,現在越來越受歡迎,Symfony基於MIT license,它使用一些PHP代碼類的輔助類庫得開發的過程簡單

源代碼

5. Webasyst
\

webasyst是一個開源的PHP框架用來開發平滑的多用戶web應用或者復雜的網站。和其它的框架,例如,zend和symfony,比較起來,Webasyst框架更專注,並且允許更快和更高效的創建基於商業和團隊使用的應用。這個框架提供了大量的現成的工具用來管理用戶和授權,UI創建,移動端的訪問等等

源代碼

6. Laravel
\

Laravle是一個定位於優雅簡單的PHP框架。變成不會變的苦悶。事實上,使用正確的工具絕對是讓它成為一個讓人愉悅的事情。Laravel適合所有的PHP開發人員,特別是初學者。除了完善的文章,Laravel的友好的社區一直幫助回答文檔上沒有涉及到的相關問題。使用Bundle來打包和分享代碼絕對是一個非常棒的方式

源代碼

7. Guzzle
\

Guzzle是一個幫助大家解決發送HTTP請求和創建web service 客戶端中多餘的步驟的框架。包含了用來創建強壯的web service客戶端的工具,其中: 定義輸入和輸出的服務描述API,用來遍歷分頁資源的資源迭代,高效發送大量請求等等。

源代碼

8. Phalcon PHP
\

Phalcon PHP是一個被發布成為C擴展並且提供高性能和低資源消耗的web框架。使用C書寫,平台無關。作為這樣的框架,PHP支持微軟的windows系統, GNU/linux,Max OSX,你可以下載一個適合你的系統的二進制包或者自己編譯

源代碼

9. CodeIgniter
\

Codelgiter是一個強大的PHP框架,擁有非常小的體積,針對需要使用簡單優雅的工具套件開發完整特性的web應用而開發。如果你需要處理共享主機賬號或者客戶時間有限制,並且厭倦了沒有文檔的大型框架的話,Codeignier可能非常適合你

源代碼

10. Fuel PHP
\

Fuel是一個簡單,靈活,社區驅動的PHP5.3 web框架,基於其它框架中的好的想法而開發一個框架。在Apache,,IIS和Nginx上測試過。Fuel使用另外一種方式實現,和其它框架不同,它努力成為社區驅動的框架。剛成立不到6個月,已經有30多個開發人員貢獻了代碼和文檔。

⑺ PHP框架的PHP框架TOP10

排名前 10 並且最受歡迎的 PHP 框架(排名不分先後)。
Laravel
這款可能是現在最受歡迎的 PHP 框架,Laravel 非常強大,而且很高雅,易於學習和使用。非常值得一試!
Flight
Flight 是一個快速,簡單,可擴展的微型 PHP 框架,允許用戶快速的構建 RESTful web 應用,同樣易於學習和使用,簡單但是很強大!
Yii
Yii 是個高性能的 PHP 框架,用來開發 Web 2.0 應用程序,Yii 擁有很豐富的特性: MVC,DAO/ActiveRecord ,I8N/L10N,緩存,身份認證,基於用戶角色的訪問控制,scaffolding和測試等等。
Medoo
Medoo 是最輕的 PHP 資料庫,只包括了一個10,9kb 的文件,一個很強大的適用於簡單的 web 小應用開發的微型框架。
PHPixie
這個框架源於 Kohana 框架,是我最喜歡的框架了:兼容 MVC,能快速掌握,強大,你也應該試一試!
CodeIgniter
雖然是個比較老的框架,也快被淘汰了,但是我還是很喜歡這個強大的 MVC 框架 CI,無數次在我的項目中使用它,從來也沒對它失去信心,依然是我不變的選擇!
Kohana
Kohana 是個開源的,面向對象的 MVC web 框架,是使用 PHP5 來構建的。這個框架是由一群志願者隊伍開發的,他們致力於迅速,安全和小。
Symfony
這個框架是在 2005 年創建,是個非常強大的 MVC 框架,在企業界是非常受歡迎的。Symfony 是收到眾多的 web 應用框架啟發的:Ruby on Rails,Django 和 Spring ,它可能是最完整的 PHP 框架了。
Pop PHP
很多 PHP 框架很漂亮也很復雜,Pop 的建立是考慮到所有經驗層次的,提供了一系列可管理的學習曲線給初學者熟悉 PHP 的基礎,同時又提供了健壯和強大的功能給有經驗的 PHP 開發者。大小小於 2MB。
Phalcon
Phalcon 是一個開源的,滿棧的 PHP 框架,使用 PHP 5 類似 C 擴展的語言來編寫的高性能框架。用戶不需要會用 C 語言,Phalcon 會提供 PHP 類。Phalcon 是鬆散耦合,用戶可以隨意使用組件來創建 web 應用。

⑻ 如何利用Thinkphp框架開發移動端介面詳解

方案一:給原生APP提供api介面

使用TP框架時 放在common文件夾下文件名就叫function.php


<?php
/**
*Createdbyzhangkx
*Email:[email protected]
*Date:2015/8/1
*Time:23:15
*/

/******api開發輔助函數*******/

/**
*@paramnull$msg返回正確的提示信息
*@paramflagsuccessCURD操作成功
*@paramarray$data具體返回信息
*Functiondescript:返回帶參數,標志信息,提示信息的json數組
*
*/
functionreturnApiSuccess($msg=null,$data=array()){
$result=array(
'flag'=>'Success',
'msg'=>$msg,
'data'=>$data
);
printjson_encode($result);
}

/**
*@paramnull$msg返回具體錯誤的提示信息
*@paramflagsuccessCURD操作失敗
*Functiondescript:返回標志信息『Error',和提示信息的json數組
*/
functionreturnApiError($msg=null){
$result=array(
'flag'=>'Error',
'msg'=>$msg,
);
printjson_encode($result);
}

/**
*@paramnull$msg返回具體錯誤的提示信息
*@paramflagsuccessCURD操作失敗
*Functiondescript:返回標志信息『Error',和提示信息,當前系統繁忙,請稍後重試;
*/
functionreturnApiErrorExample(){
$result=array(
'flag'=>'Error',
'msg'=>'當前系統繁忙,請稍後重試!',
);
printjson_encode($result);
}

/**
*@paramnull$data
*@returnarray|mixed|null
*Functiondescript:過濾post提交的參數;
*
*/

functioncheckDataPost($data=null){
if(!empty($data)){
$data=explode(',',$data);
foreach($dataas$k=>$v){
if((!isset($_POST[$k]))||(empty($_POST[$k]))){
if($_POST[$k]!==0&&$_POST[$k]!=='0'){
returnApiError($k.'值為空!');
}
}
}
unset($data);
$data=I('post.');
unset($data['_URL_'],$data['token']);
return$data;
}
}

/**
*@paramnull$data
*@returnarray|mixed|null
*Functiondescript:過濾get提交的參數;
*
*/
functioncheckDataGet($data=null){
if(!empty($data)){
$data=explode(',',$data);
foreach($dataas$k=>$v){
if((!isset($_GET[$k]))||(empty($_GET[$k]))){
if($_GET[$k]!==0&&$_GET[$k]!=='0'){
returnApiError($k.'值為空!');
}
}
}
unset($data);
$data=I('get.');
unset($data['_URL_'],$data['token']);
return$data;
}
}


查詢單個果品詳細信息
/**
*發布模塊
*
*獲取信息單個果品詳細信息
*
*/
(){
//檢查是否通過post方法得到數據
checkdataPost('id');
$where['id']=$_POST['id'];
$field[]='id,fruit_name,high_price,low_price,address,size,weight,fruit_pic,remark';
$releaseInfo=$this->release_obj->findRelease($where,$field);
$releaseInfo['remark']=mb_substr($releaseInfo['remark'],0,49,'utf-8').'...';
//多張圖地址按逗號截取字元串,截取後如果存在空數組則需要過濾掉
$releaseInfo['fruit_pic']=array_filter(explode(',',$releaseInfo['fruit_pic']));
$fruit_pic=$releaseInfo['fruit_pic'];unset($releaseInfo['fruit_pic']);
//為圖片添加存儲路徑
foreach($fruit_picas$k=>$v){
$releaseInfo['fruit_pic'][]='http://'.$_SERVER['HTTP_HOST'].'/Uploads/Release/'.$v;
}
if($releaseInfo){
returnApiSuccess('',$releaseInfo);
}else{
returnApiError('什麼也沒查到(+_+)!');
}
}


findRelease()方法的model
/**
*查詢一條數據
*/
publicfunctionfindRelease($where,$field){
if($where['status']==''||empty($where['status'])){
$where['status']=array('neq','9');
}
$result=$this->where($where)->field($field)->find();
return$result;
}


app端接收到的數據(解碼json之後)
{
"flag":"success",
"message":"",
"responseList":{
"id":"2",
"fruit_name":"蘋果",
"high_price":"8.0",
"low_price":"5.0",
"address":"天津小白樓水果市場",
"size":"2.0",
"weight":"2.0",
"remark":"急需...",
"fruit_pic":[
"http://fruit.txunda.com/Uploads/Release/201508/55599e7514815.png",
"http://fruit.txunda.com/Uploads/Release/201508/554f2dc45b526.jpg"
]
}
}


app端接收到的數據(原生json串)
代碼如下:

{"flag":"success","message":"","responseList":{"id":"2","fruit_name":"u82f9u679c","high_price":"8.0","low_price":"5.0","address":"","size":"2.0","weight":"2.0","remark":"u6025u9700...","fruit_pic":["http://fruit.txunda.com/Uploads/Release/201508/55599e7514815.png","http://fruit.txunda.com/Uploads/Release/201508/554f2dc45b526.jpg"]}}

方案二:另外我們還可以通過ThinkPHP實現移動端訪問自動切換主題模板,這樣也可以做到移動端訪問

ThinkPHP的模板主題機制,如果只是在PC,只要需修改 DEFAULT_THEME (新版模板主題默認是空,表示不啟用模板主題功能)配置項就可以方便的實現多模板主題切換。

但對於移動端與PC端,也許你會設計完全不同的主題風格,且針對不同的來路提供不同的渲染方式,其中一種比較流行的方法是「響應式設計」,但就本人經歷而言,要實現完全的「響應式設計」並不是那麼容易,且解決兼容問題也是個難題,假設是大型站點,比如:淘寶、網路、拍拍這些,響應式設計肯定是滿足不了需求的,而是需要針對手機訪問用戶提供單獨的手機網站。

ThinkPHP 完全能夠實現,而且非常的簡單。與TPM的智能模版切換引擎相同,只要對來路進行判斷處理就行了。

一、將 ismobile() 加入到{項目/Common/common.php}

functionismobile(){
//如果有HTTP_X_WAP_PROFILE則一定是移動設備
if(isset($_SERVER['HTTP_X_WAP_PROFILE']))
returntrue;

//此條摘自TPM智能切換模板引擎,適合TPM開發
if(isset($_SERVER['HTTP_CLIENT'])&&'PhoneClient'==$_SERVER['HTTP_CLIENT'])
returntrue;
//如果via信息含有wap則一定是移動設備,部分服務商會屏蔽該信息
if(isset($_SERVER['HTTP_VIA']))
//找不到為flase,否則為true
returnstristr($_SERVER['HTTP_VIA'],'wap')?true:false;
//判斷手機發送的客戶端標志,兼容性有待提高
if(isset($_SERVER['HTTP_USER_AGENT'])){
$clientkeywords=array(
'nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile'
);
//從HTTP_USER_AGENT中查找手機瀏覽器的關鍵字
if(preg_match("/(".implode('|',$clientkeywords).")/i",strtolower($_SERVER['HTTP_USER_AGENT']))){
returntrue;
}
}
//協議法,因為有可能不準確,放到最後判斷
if(isset($_SERVER['HTTP_ACCEPT'])){
//如果只支持wml並且不支持html那一定是移動設備
//如果支持wml和html但是wml在html之前則是移動設備
if((strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==false)&&(strpos($_SERVER['HTTP_ACCEPT'],'text/html')===false||(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')<strpos($_SERVER['HTTP_ACCEPT'],'text/html')))){
returntrue;
}
}
returnfalse;
}

二、在{項目/Lib/}創建一個 CommonAction.php,假設你的項目已公共控制器,則無需創建,直接加在裡面就行了。

{
Publicfunction_initialize(){
//移動設備瀏覽,則切換模板
if(ismobile()){
//設置默認默認主題為Mobile
C('DEFAULT_THEME','Mobile');
}
//............你的更多代碼.......
}
}

閱讀全文

與php移動框架相關的資料

熱點內容
msf埠遷移命令 瀏覽:880
工商app積分怎麼查詢 瀏覽:143
鐵路app怎麼買火車票 瀏覽:309
移魅族除的app怎麼添加 瀏覽:240
兔籠子大號加密 瀏覽:171
單片機程序燒錄操作成功 瀏覽:878
指標高拋低吸點位源碼 瀏覽:205
25匹壓縮機銅管 瀏覽:570
單片機單燈左移05 瀏覽:150
買伺服器練手什麼配置 瀏覽:783
伺服器被毀該怎麼辦 瀏覽:939
python私有庫 瀏覽:514
Python有中文嗎 瀏覽:736
麥塊的伺服器為什麼都進不去 瀏覽:474
新買的伺服器如何打開 瀏覽:35
安卓軟體游戲怎麼開發 瀏覽:319
用撲克擺愛心解壓神器怎麼擺 瀏覽:70
松下製冷壓縮機 瀏覽:275
pdf里怎麼修改文字 瀏覽:686
已保存文檔加密如何設置 瀏覽:413