『壹』 用ThinkPHP 這樣的框架開發門戶網站,有什麼缺點
ThinkPHP的優缺點如下:
1、高級模型:可以輕松支持序列化欄位、文本欄位、只讀欄位、延遲寫入、樂觀鎖、數據分表等高級特性。
2、視圖模型:輕松動態地創建資料庫視圖,多表查詢相對簡單。
3、關聯模型:讓你以出乎意料的簡單、靈活的方式完成多表的關聯操作。
4、模板引擎:系統內建了一款卓越的基於XML的編譯型模板引擎,支持兩種類型的模板標簽,融合了Smarty和JSP標簽庫的思想,支持標簽庫擴展。通過驅動還可以支持Smarty、EaseTemplate、TemplateLite、Smart等第三方模板引擎。
5、緩存機制:系統支持包括文件方式、APC、Db、Memcache、Shmop、Eaccelerator和Xcache在內的多種動態數據緩存類型,以及可定製的靜態緩存規則,並提供了快捷方法進行存取操作。
6、類庫導入:ThinkPHP是首先採用基於類庫包和命名空間的方式導入類庫,讓類庫導入看起來更加簡單清晰,而且還支持沖突檢測和別名導入。為了方便項目的跨平台移植,系統還可以嚴格檢查載入文件的大小寫。
7、擴展機制:系統支持包括類庫擴展、驅動擴展、應用擴展、模型擴展、控制器擴展、標簽庫擴展、模板引擎擴展、Widget擴展、行為擴展和模式擴展在內的強大靈活的擴展機制,讓你不再受限於核心的不足和無所適從,隨心DIY自己的框架和擴展應用。
8、URL模式:系統支持普通模式、PATHINFO模式、REWRITE模式和兼容模式的URL方式,支持不同的伺服器和運行模式的部署,配合URL路由功能,讓你隨心所欲的構建需要的URL地址和進行SEO優化工作。
9、編譯機制:獨創的核心編譯和項目的動態編譯機制,有效減少OOP開發中文件載入的性能開銷。ALLINONE模式更是讓你體驗飛一般的感覺。
10、ORM:簡潔輕巧的ORM實現,配合簡單的CURD以及AR模式,讓開發效率無處不在。
11、查詢語言:內建豐富的查詢機制,包括組合查詢、復合查詢、區間查詢、統計查詢、定位查詢、動態查詢和原生查詢,讓你的數據查詢簡潔高效。
12、動態模型:無需創建任何對應的模型類,輕松完成CURD操作,支持多種模型之間的動態切換,讓你領略數據操作的無比暢快和最佳體驗。
13、分組模塊:不用擔心大項目的分工協調和部署問題,分組模塊幫你解決跨項目的難題。
14、AJAX支持:內置AJAX數據返回方法,支持JSON、XML和EVAL格式返回客戶端,並且系統不綁定任何AJAX類庫,可隨意使用自己熟悉的AJAX類庫進行操作。
15、多語言支持:系統支持語言包功能,項目和模塊都可以有單獨的語言包,並且可以自動檢測瀏覽器語言自動載入對應的語言包。
16、模式擴展:除了標准模式外,系統內置了Lite、Thin和Cli模式,針對不同級別的應用開發提供最佳核心框架,還可以自定義模式擴展。
17、自動驗證和完成:自動完成表單數據的驗證和過濾,生成安全的數據對象。
18、欄位類型檢測:欄位類型強制轉換,確保數據寫入和查詢更安全。
19、資料庫特性:系統支持多資料庫連接和動態切換機制,支持分布式資料庫。猶如企業開發的一把利刃,跨資料庫應用和分布式支持從此無憂。
『貳』 thinkphp開發電商與直接購買ecshop哪個好
看你要什麼樣的了, 你要是要簡單的那就開發一個吧,要是要特別復雜的就買
『叄』 有沒有thinkphp 5.0開發的開源商城推薦,謝謝!
wstmart,這個商城是tp5開發的,框架雙11發布更新,這個開源系統在框架發布的一周內就升級到了5.0.3,開發團隊很強大,功能也挺全的,希望採納。
『肆』 thinkphp的項目怎麼開發
個人理解:你把action 看成一個機器 (本身也有一些功能), 在組裝一些東西 到html上,
『伍』 thinkphp能開發大型網站嗎
沒有幾個大型網站用他們這些框架的
框架在業務應用量小的情況下跟普通的面向過程應用的效率是基本一致的,只有在業務應用量放大到百萬,千萬倍的時候他們之間的差距才能看的出來,具體的你可以自己測試一下,一些壓力測試工具都可以做的,比如apache bench 或者 webbench
『陸』 如何利用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');
}
//............你的更多代碼.......
}
}
『柒』 thinkphp框架的優缺點對於開發來說最好用什麼框架
你好,其實現在主流的PHP框架都各有優勢,而且都可以完成php開發者的基本要求。但是其實在使用率上,每個區域都是不一樣的。 在中國,thinkphp的使用率肯定是最高的,而在外國各個框架的使用率也不一樣。除了框架的使用體驗有關系外,其實也和可查詢的資料有關系,作為國產框架thinkphp的資料自然是最多的。也正是這個原因thinkphp在中國的使用率非常高,同理類似Laravel、yii2這些外國比較流行的框架也有一部分是這個原因,當然不可否認它們的使用體驗也很不錯。我個人喜歡用CI,這里也要說到地域和環境了,我所在的城市,還有我身邊的程序員朋友也都是先用CI的,這個也有一定的帶動作用
『捌』 想求幾個thinkphp開發的實例及源碼 我是新手
我有網路網盤,實戰實例,可以分享給你!
『玖』 THINKPHP開發的開源商城好么,比如wstmart,這個系統好不好
一 個 不 開 源 的 系 統 , 像 是 買 一 個 黑 盒 子 , 出 了 問 題 或 者 是 需 要 修 改 功 能 都 需 要 找 軟 件 系 統 提 供 商 來 解 決 , 價 格 方 面 很 難 預 料 , 而 且 溝 通 時 服 務 質 量 差 也 無 法 另 外 選 擇 。 全 開 源 源 碼 有 助 於 二 次 開 發 , 即 使 原 來 的 技 術 服 務 商 服 務 跟 不 上 , 企 業 也 可 以 自 己 招 技 術 員 或 者 換 別 的 技 術 商 來 管 理 , 不 受 原 軟 件 開 發 商 的 約 束 。 開 源 會 吸 引 很 多 專 業 人 員 圍 觀 和 研 究 , 三 人 行 必 有 我 師 焉 , 系 統 漏 洞 和 b u g 都 很 容 易 被 人 發 現 , 當 然 也 就 能 夠 得 到 及 時 修 復 。 wstmart 系 統 的 擴 展 性 不 錯 啊 , 基 於 t p 讓 開 發 的 門 檻 更 低 , 代 碼 開 源 後 可 以 比 較 容 易 根 據 自 己 的 運 營 需 要 進 行 二 次 開 發 。
『拾』 thinkphp框架開發商城的思路
一般來說,有以下幾點,其他根據自己需要:
至少兩個模塊,前台和後台(Home、Admin)
前台需要(控制器【方法】):用戶操作(【登入】、【登出】、【購物車】、【提交訂單】、【付款】等)、商品操作(【上架】、【下架】、【分類】、【數量】等)、新聞展示(不一一列舉,看實際需要)、留言等
後台需要(控制器【方法】):管理員操作(【登入】【登出】)、商品操作(【添加】【修改】【刪除】)、訂單操作(【查看】【修改】【發貨】【刪除】)、新聞展示、留言、日誌、許可權等