日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
優(yōu)化你的PHP代碼,從現(xiàn)在做起

前言

按需設(shè)計(jì)網(wǎng)站可以根據(jù)自己的需求進(jìn)行定制,成都網(wǎng)站建設(shè)、成都網(wǎng)站制作構(gòu)思過程中功能建設(shè)理應(yīng)排到主要部位公司成都網(wǎng)站建設(shè)、成都網(wǎng)站制作的運(yùn)用實(shí)際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實(shí)際意義

我一生的文章都會放在這里,我的博客,我希望每一行代碼,每一段文字都能幫助你。https://github.com/CrazyCodes...

大家好,我是CrazyCodes ,今天我們不聊工具、規(guī)范等等等等的輔助,就聊一下該如何寫一段“好”的代碼,本文以我的職業(yè)生涯碰到的代碼為例,如有出入請?jiān)谠u論區(qū)提出異議,謝謝。

搜索功能

搜索很常見,復(fù)雜的搜索大多出行在后臺,舉個(gè)栗子,大概需求是這樣的。

這是一個(gè)后臺用戶列表的搜索功能

搜索條件 可否并行 是否必填
用戶名 可以
手機(jī)號碼 可以
是否已認(rèn)證 可以
用戶性別 可以
最近登錄時(shí)間 可以
賬戶余額 可以

初學(xué)者代碼

看到這些例子你是否不由的一顫,又要開始造輪子的是不是?

以原生的例子為例,開始你可能會這樣寫(以下為偽代碼) :

 
 
 
  1. if (IS_POST) { 
  2.     $like = ''; 
  3.     if (isset($_POST['username'])) { 
  4.         $username = $_POST['username']; 
  5.         $like .= "username like '%" . $username . "%' and "; 
  6.     } 
  7.     if (isset($_POST['phone'])) { 
  8.         $phone = $_POST['phone']; 
  9.         $like .= "phone like '%" . $phone . "%' and"; 
  10.     } 
  11.     if ($_POST['is_auth']) { 
  12.         $isAuth = $_POST['is_auth']; 
  13.         $like .= "is_auth like '%" . $isAuth . "%' and"; 
  14.     } 
  15.     if ($_POST['sex']) { 
  16.         $sex = $_POST['sex']; 
  17.         $like .= "sex like '%" . $sex . "%' and"; 
  18.     } 
  19.     if ($_POST['time']) { 
  20.         $time = $_POST['time']; 
  21.         $like .= "time like '%" . $time . "%' and"; 
  22.     } 
  23.     if ($_POST['wallet']) { 
  24.         $wallet = $_POST['wallet']; 
  25.         $like .= "wallet like '%" . $wallet . "%' and"; 
  26.     } 
  27.     $like = rtrim($like, 'and'); 
  28.     $sql = "SELECT * FROM `user` WHERE {$like}"; 
  29. } else { 
  30.     return view('user'); 

封裝

恩...,還不錯(cuò),結(jié)構(gòu)清晰,傳統(tǒng)的初學(xué)者條型代碼,接下來我們先封裝一下幾塊代碼。

 
 
 
  1. function post($param) 
  2.     return isset($_POST[$param]) ? $_POST[$param] : null; 
  3. if (IS_POST) { 
  4.     $like = ''; 
  5.     if (post('username')) { 
  6.         $username = post('username'); 
  7.         $like .= "username like '%" . $username . "%' and "; 
  8.     } 
  9.     if (post('phone')) { 
  10.         $phone = post('phone'); 
  11.         $like .= "phone like '%" . $phone . "%' and"; 
  12.     } 
  13.     if (post('is_auth')) { 
  14.         $isAuth = post('is_auth'); 
  15.         $like .= "is_auth like '%" . $isAuth . "%' and"; 
  16.     } 
  17.     if (post('sex')) { 
  18.         $sex = post('sex'); 
  19.         $like .= "sex like '%" . $sex . "%' and"; 
  20.     } 
  21.     if (post('time')) { 
  22.         $time = post('time'); 
  23.         $like .= "time like '%" . $time . "%' and"; 
  24.     } 
  25.     if (post('wallet')) { 
  26.         $wallet = post('wallet'); 
  27.         $like .= "wallet like '%" . $wallet . "%' and"; 
  28.     } 
  29.     $like = rtrim($like, 'and'); 
  30.     $sql = "SELECT * FROM `user` WHERE {$like}"; 
  31. } else { 
  32.     return view('user'); 

適當(dāng)使用迭代

恩,至少我們可以自由控制post方法了,但是這類過程化代碼維護(hù)性太低,我們再改進(jìn)下:

 
 
 
  1. function post($param) 
  2.     return isset($_POST[$param]) ? $_POST[$param] : false; 
  3. function postAll() 
  4.     return $_POST; 
  5. if (IS_POST) { 
  6.     $like = ''; 
  7.     foreach (postAll() as $key => $value) { 
  8.         if (post($key)) { 
  9.             $like .= "{$key} like '%{$value}%' and"; 
  10.         } 
  11.     } 
  12.     $like = rtrim($like, 'and'); 
  13.     $sql = "SELECT * FROM `user` WHERE {$like}"; 
  14. } else { 
  15.     return view('user'); 

面向?qū)ο?/strong>

加個(gè)迭代代碼看起來還算是整潔了點(diǎn),作為PHP程序員,寫代碼不面向?qū)ο蟛豢孔V,把class加上。

 
 
 
  1. function request($param = null) 
  2.     return new Request($param); 
  3. class Request 
  4.     public function __construct(string $param = null)
  5.     { 
  6.         return isset($_POST[$param]) ? $_POST[$param] : false; 
  7.     } 
  8.     public function all() 
  9.     { 
  10.         return $_POST; 
  11.     } 
  12. class User 
  13.     public function index() 
  14.     { 
  15.         if (IS_POST) { 
  16.             $like = ''; 
  17.             foreach (request()->all() as $key => $value) { 
  18.                 if (request($key)) { 
  19.                     $like .= "{$key} like '%{$value}%' and"; 
  20.                 } 
  21.             } 
  22.             $like = rtrim($like, 'and'); 
  23.             $sql = "SELECT * FROM `user` WHERE {$like}"; 
  24.         } else { 
  25.             return view('user'); 
  26.         } 
  27.     } 

對User的改造

我們在對User的類進(jìn)行改造,做一些判斷及篩選。

 
 
 
  1. function request($param = null) 
  2.     return new Request($param); 
  3. class Request 
  4.     public function __construct(string $param = null) 
  5.     { 
  6.         return isset($_POST[$param]) ? $_POST[$param] : false; 
  7.     } 
  8.     public function all() 
  9.     { 
  10.         return $_POST; 
  11.     } 
  12. class User 
  13.     public $request = [ 
  14.         'username', 
  15.         'phone', 
  16.         'is_auth', 
  17.         'sex', 
  18.         'time', 
  19.         'wallet' 
  20.     ]; 
  21.     public function index() 
  22.     { 
  23.         if (IS_POST) { 
  24.             $like = ''; 
  25.             foreach (request()->all() as $key => $value) { 
  26.                 if (in_array($key, $this->request) && request($key)) { 
  27.                     $like .= sprintf("%s like %s and", $key, $value); 
  28.                 } 
  29.             } 
  30.             $like = rtrim($like, 'and'); 
  31.             $sql = "SELECT * FROM `user` WHERE {$like}";
  32.         } else { 
  33.             return view('user'); 
  34.         } 
  35.     } 
  36. }

這就差不多了,對比真是的代碼可能還相差甚遠(yuǎn),我寫這篇文章的目的不是教會你如何寫代碼,是想說明編碼不是一次性的,應(yīng)經(jīng)過多次修改,使代碼具有可維護(hù)性,擴(kuò)展性等等的,各種“性”。


網(wǎng)站題目:優(yōu)化你的PHP代碼,從現(xiàn)在做起
鏈接分享:http://www.5511xx.com/article/cdsossg.html