前言我一生的文章都会放在这里,我的博客,希望每一行代码,每一段文字,都能对你有所帮助。https://github.com/CrazyCodes...大家好,我是CrazyCodes。今天我们不谈工具、规范等,而是如何写出“好”的代码。本文以我职业生涯中遇到的代码为例。如有不妥,请在评论区提出异议,谢谢。搜索功能搜索很常见,复杂的搜索多在后台进行。例如,一般要求是这样的。这是一个后台用户列表搜索功能。搜索条件是否可以并行?用户名,手机号,是否认证可以是用户的性别吗?可以是最新的登录时间吗?可以是账户余额吗?以原生例子为例,你可能会这样写(以下是伪代码)if(IS_POST){$like='';if(isset($_POST['username'])){$username=$_POST['username'];$like.="usernamelike'%".$用户名。“%'和”;}if(isset($_POST['phone'])){$phone=$_POST['phone'];$like.="phonelike'%".$电话。“%'和”;}if($_POST['is_auth']){$isAuth=$_POST['is_auth'];$like.="is_authlike'%".$isAuth。“%'和”;}if($_POST['sex']){$sex=$_POST['sex'];$like.="sexlike'%".$性别。“%'和”;}if($_POST['time']){$time=$_POST['time'];$like.="timelike'%".$时间。“%'和”;}if($_POST['wallet']){$wallet=$_POST['wallet'];$like.="walletlike'%".$钱包。“%'和”;$like=rtrim($like,'and');$sql="SELECT*FROM`user`WHERE{$like}";}else{returnview('user');}封装好了...,不错,结构清晰,传统初学者条码,那我们封装一个先放几段代码函数post($param){返回isset($_POST[$param])?$_POST[$param]:null;}if(IS_POST){$like='';if(post('username')){$username=post('username');$like.="usernamelike'%".$用户名。“%'和”;}if(post('phone')){$phone=post('phone');$like.="phonelike'%".$电话。“%'和”;}if(post('is_auth')){$isAuth=post('is_auth');$like.="is_authlike'%".$isAuth。“%'和”;}if(post('sex')){$sex=post('sex');$like.="sexlike'%".$性别。“%'和”;}if(post('time')){$time=post('time');$like.="timelike'%".$时间。“%'和”;}if(post('wallet')){$wallet=post('wallet');$like.="walletlike'%".$钱包。“%'和”;$like=rtrim($like,'and');$sql="SELECT*FROM`user`WHERE{$like}";}else{returnview('user');}正确使用迭代嘛,至少我们可以自由控制post方法,但是这种程序代码可维护性太低,让我们改进下一个函数post($param){returnisset($_POST[$param])?$_POST[$param]:false;}functionpostAll(){return$_POST;}if(IS_POST){$like='';foreach(postAll()as$key=>$value){if(post($key)){$like.="{$key}like'%{$value}%'和";$like=rtrim($like,'and');$sql="SELECT*FROM`user`WHERE{$like}";}else{returnview('user');}面向对象和迭代的代码看起来很工整点,作为PHP程序员,写起来不靠谱非面向对象的代码,将类添加到函数中request($param=null){returnnewRequest($param);}classRequest{publicfunction__construct(string$param=null){参数])?$_POST[$参数]:假;}publicfunctionall(){return$_POST;}}classUser{publicfunctionindex(){if(IS_POST){$like='';foreach(request()->all()as$key=>$value){if(request($key)){$like.="{$key}like'%{$value}%'and";$like=rtrim($like,'and');$sql="SELECT*FROM`user`WHERE{$like}";}else{返回视图('用户');}}}User的改造我们在改造User类,做一些判断和筛选返回isset($_POST[$param])?$_POST[$参数]:假;}publicfunctionall(){return$_POST;}}classUser{public$request=['username','phone','is_auth','sex','time','wallet'];publicfunctionindex(){if(IS_POST){$like='';foreach(request()->all()as$key=>$value){if(in_array($key,$this->request)&&request($key)){$like.=sprintf("%slike%s和",$key,$value);}}$喜欢=RT边缘($喜欢,“和”);$sql="SELECT*FROM`user`WHERE{$like}";}else{返回视图('用户');}}}这个差不多,对比真实的代码可能差的很远。我写这篇文章的目的不是教大家怎么写代码,而是说明编码不是一次性的,而是应该多次修改,让代码具有可维护性、可扩展性等等,各种“性”致谢感谢您阅读本文,希望本文能对您有所帮助,谢谢
