如何优化PHP代码
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍了如何优化PHP代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言这是一个后台用户列表的搜索功能搜索条件可否并行是
千家信息网最后更新 2025年11月08日如何优化PHP代码
这篇文章主要介绍了如何优化PHP代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
前言
这是一个后台用户列表的搜索功能
| 搜索条件 | 可否并行 | 是否必填 |
|---|---|---|
| 用户名 | 可以 | 否 |
| 手机号码 | 可以 | 否 |
| 是否已认证 | 可以 | 是 |
| 用户性别 | 可以 | 否 |
| 最近登录时间 | 可以 | 否 |
| 账户余额 | 可以 | 否 |
初学者代码
看到这些例子你是否不由的一颤,又要开始造轮子的是不是?
以原生的例子为例,开始你可能会这样写(以下为伪代码) :
if (IS_POST) { $like = ''; if (isset($_POST['username'])) { $username = $_POST['username']; $like .= "username like '%" . $username . "%' and "; } if (isset($_POST['phone'])) { $phone = $_POST['phone']; $like .= "phone like '%" . $phone . "%' and"; } if ($_POST['is_auth']) { $isAuth = $_POST['is_auth']; $like .= "is_auth like '%" . $isAuth . "%' and"; } if ($_POST['sex']) { $sex = $_POST['sex']; $like .= "sex like '%" . $sex . "%' and"; } if ($_POST['time']) { $time = $_POST['time']; $like .= "time like '%" . $time . "%' and"; } if ($_POST['wallet']) { $wallet = $_POST['wallet']; $like .= "wallet like '%" . $wallet . "%' and"; } $like = rtrim($like, 'and'); $sql = "SELECT * FROM `user` WHERE {$like}"; } else { return view('user'); }封装
恩...,还不错,结构清晰,传统的初学者条型代码,接下来我们先封装一下几块代码。
function post($param) { return isset($_POST[$param]) ? $_POST[$param] : null; } if (IS_POST) { $like = ''; if (post('username')) { $username = post('username'); $like .= "username like '%" . $username . "%' and "; } if (post('phone')) { $phone = post('phone'); $like .= "phone like '%" . $phone . "%' and"; } if (post('is_auth')) { $isAuth = post('is_auth'); $like .= "is_auth like '%" . $isAuth . "%' and"; } if (post('sex')) { $sex = post('sex'); $like .= "sex like '%" . $sex . "%' and"; } if (post('time')) { $time = post('time'); $like .= "time like '%" . $time . "%' and"; } if (post('wallet')) { $wallet = post('wallet'); $like .= "wallet like '%" . $wallet . "%' and"; } $like = rtrim($like, 'and'); $sql = "SELECT * FROM `user` WHERE {$like}"; } else { return view('user'); }适当使用迭代
恩,至少我们可以自由控制post方法了,但是这类过程化代码维护性太低,我们再改进下:
function post($param) { return isset($_POST[$param]) ? $_POST[$param] : false; } function postAll() { return $_POST; } if (IS_POST) { $like = ''; foreach (postAll() as $key => $value) { if (post($key)) { $like .= "{$key} like '%{$value}%' and"; } } $like = rtrim($like, 'and'); $sql = "SELECT * FROM `user` WHERE {$like}"; } else { return view('user'); }面向对象
加个迭代代码看起来还算是整洁了点,作为PHP程序员,写代码不面向对象不靠谱,把class加上。
function request($param = null) { return new Request($param); } class Request { public function __construct(string $param = null) { return isset($_POST[$param]) ? $_POST[$param] : false; } public function all() { return $_POST; } } class User { public function index() { 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 { return view('user'); } } }对User的改造
我们在对User的类进行改造,做一些判断及筛选。
function request($param = null) { return new Request($param); } class Request { public function __construct(string $param = null) { return isset($_POST[$param]) ? $_POST[$param] : false; } public function all() { return $_POST; } } class User { public $request = [ 'username', 'phone', 'is_auth', 'sex', 'time', 'wallet' ]; public function index() { if (IS_POST) { $like = ''; foreach (request()->all() as $key => $value) { if (in_array($key, $this->request) && request($key)) { $like .= sprintf("%s like %s and", $key, $value); } } $like = rtrim($like, 'and'); $sql = "SELECT * FROM `user` WHERE {$like}"; } else { return view('user'); } } }这就差不多了,对比真是的代码可能还相差甚远,我写这篇文章的目的不是教会你如何写代码,是想说明编码不是一次性的,应经过多次修改,使代码具有可维护性,扩展性等等的,各种"性"。
感谢你能够认真阅读完这篇文章,希望小编分享的"如何优化PHP代码"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
代码
篇文章
用户
例子
初学者
对象
封装
搜索
改造
迭代
不错
整洁
适当
自由
差不多
接下来
一次性
价值
传统
兴趣
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
现在做网络安全工作怎么样
网络安全红蓝队伍宣传
网络安全相关的公益广告
电脑数据库已满
数据库双引号与引号的区别
如何更改服务器的管理地址
网络安全渗透靶场
互联网创业算科技类吗
华为生态软件开发合作
优质it科技互联网
网络安全困扰事件
上海启梦网络技术
浙江hpe刀片服务器哪家好
谷歌服务器怎么添加到电脑
简述建立客户数据库的意义
软件开发一般赚多少钱
服务器一个网站打开慢其他正常
泡泡堂为什么联不上服务器
方舟非官方服务器安全吗
怎么选择云服务器阿里云
怎样编辑表格数据库
漯河哪个中专学软件开发最好
浪潮服务器raid修复功能
做软件开发需要的办公产品
去北京那里学软件开发学校呢
软件开发初级入门哪里好
2019新加坡网络安全大会
银行指纹转账会录入服务器吗
大漠插件服务器 挂了
广东推广软件开发询问报价