PHP性能优化与缓存策略
0
4
2026年6月12日
PHP是最经典的Web开发语言之一,全球数百万网站广泛使用。本文分享3个完整可运行的代码示例,涵盖PHP开发核心技能。
完整表单验证类
安全的表单验证有效防止SQL注入和XSS攻击。
<?php
class FormValidator {
private $errors = [];
private $data = [];
public function required($field, $label, $value) {
if (empty(trim($value))) {
$this->errors[$field] = "{$label}不能为空";
return false;
}
$this->data[$field] = trim($value);
return true;
}
public function email($field, $label, $value) {
if (!filter_var(trim($value), FILTER_VALIDATE_EMAIL)) {
$this->errors[$field] = "{$label}格式不正确";
return false;
}
$this->data[$field] = strtolower(trim($value));
return true;
}
public static function safeOutput($data) {
return htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
}
public function passes() {
return empty($this->errors);
}
}
$v = new FormValidator();
$v->required('username', '用户名', $_POST['username'] ?? '');
$v->email('email', '邮箱', $_POST['email'] ?? '');
if ($v->passes()) {
echo "验证通过";
} else {
print_r($v->getErrors());
}
?>
完整PDO数据库类
PDO预处理语句防止SQL注入。
<?php
class Database {
private $pdo;
private static $instance = null;
private function __construct() {
$dsn = "mysql:host=localhost;dbname=test;charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
$this->pdo = new PDO($dsn, 'user', 'pass', $options);
}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
public function fetchOne($sql, $params = []) {
$stmt = $this->pdo->prepare($sql);
$stmt->execute($params);
return $stmt->fetch();
}
public function insert($table, $data) {
$columns = implode(', ', array_keys($data));
$placeholders = ':' . implode(', :', array_keys($data));
$sql = "INSERT INTO {$table} ({$columns}) VALUES ({$placeholders})";
$stmt = $this->pdo->prepare($sql);
$stmt->execute($data);
return $this->pdo->lastInsertId();
}
}
?>
完整文件上传类
安全文件上传防止恶意文件攻击。
<?php
class FileUploader {
private $allowedTypes = ['image/jpeg', 'image/png'];
private $maxSize = 2097152;
public function upload($fileField) {
$file = $_FILES[$fileField];
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($file['tmp_name']);
if (!in_array($mimeType, $this->allowedTypes)) {
return false;
}
$extension = pathinfo($file['name'], PATHINFO_EXTENSION);
$filename = uniqid() . '.' . $extension;
$filepath = 'uploads/' . $filename;
if (move_uploaded_file($file['tmp_name'], $filepath)) {
return ['filename' => $filename, 'path' => $filepath];
}
return false;
}
}
?>
PHP最佳实践
- 始终验证和过滤用户输入
- 使用预处理语句,永不字符串拼接
- 开启OPcache获得2-5倍性能提升
- 生产环境记录错误日志,不显示错误
- 使用Composer自动加载遵循PSR-4规范
- 遵循PSR编码标准
- 使用Redis/Memcached缓存热点数据
技术分享,欢迎评论区交流讨论。
在线咨询
上一个应该是我,我买了一年,实在没价值,...