H10 PHP 开发常见操作与示例

本文档整理了详细说明了 PHP 开发中的基础语法、数据库查询、迁移管理、消息队列管理、模型查询、文件处理以及代码规范检查等内容,包含具体代码示例和中文说明,适合快速参考和学习。

基础语法

字符串操作

explode 和 implode

用于字符串分割与合并,类似于 Python 的 splitjoin

1
2
3
4
$data = '1 of 4 ';
$array = explode('of', $data); // 分割字符串为数组 ['1 ', ' 4 ']
$string = implode('', $array); // 拼接数组为字符串 '1 4 '
var_dump($array, $string);

说明

  • explode 将字符串按指定分隔符分割成数组,适用于解析固定格式的字符串。
  • implode 将数组元素拼接成字符串,常用于生成特定格式的输出。

str_replace 和 trim

字符串替换与去除首尾空白。

1
2
3
4
5
$text = '  Hello, World!  ';
$replaced = str_replace('World', 'PHP', $text); // 替换 'World' 为 'PHP'
$trimmed = trim($text); // 去除首尾空格
echo $replaced . PHP_EOL; // 输出: Hello, PHP!
echo $trimmed . PHP_EOL; // 输出: Hello, World!

说明

  • str_replace 支持批量替换,常用于文本清理或格式化。
  • trim 可指定去除的字符集,如 trim($text, " \t\n\r")

输出与换行

1
echo 'Hello world' . PHP_EOL; // 输出并换行

说明
PHP_EOL 是 PHP 内置的换行符常量,跨平台兼容(Windows 为 \r\n,Unix 为 \n)。

数组定义

1
2
3
4
5
$test = [
'ref' => 'test1',
'ref2' => 'test2'
];
print_r($test);

说明
PHP 数组支持键值对,类似 Python 的字典,常用于配置或数据传递。

三元表达式

简洁的条件判断语法。

1
2
$condition = true;
echo $condition ? "true" : "false"; // 输出: true

说明
三元表达式适合简单的条件赋值或输出,避免冗长的 if-else

JSON 编码

1
2
$test = ['ref' => 'test1', 'ref2' => 'test2'];
echo json_encode($test); // 输出: {"ref":"test1","ref2":"test2"}

说明
json_encode 将 PHP 数组或对象转为 JSON 字符串,常用于 API 数据返回。

文件读写

1
2
3
4
5
6
7
// 读取文件
$content = file_get_contents('example.txt');
echo $content;

// 写入文件
$data = 'Hello, PHP!';
file_put_contents('output.txt', $data);

说明

  • file_get_contents 读取整个文件到字符串,适合小型文件。
  • file_put_contents 写入内容到文件,覆盖原有内容,支持追加模式(FILE_APPEND)。

HTML 解码

1
2
3
$encoded = '<div>Hello</div>';
$decoded = html_entity_decode($encoded);
echo $decoded; // 输出: <div>Hello</div>

说明
html_entity_decode 将 HTML 实体(如 &lt;)转换为对应字符,适用于显示用户输入或外部数据。

正则表达式

preg_match 和 preg_match_all

1
2
3
4
5
6
$text = 'Contact: foo@example.com, bar@example.com';
preg_match('/[a-z]+@example\.com/', $text, $match);
print_r($match); // 输出: ['foo@example.com']

preg_match_all('/[a-z]+@example\.com/', $text, $matches);
print_r($matches); // 输出: [['foo@example.com', 'bar@example.com']]

说明

  • preg_match 匹配一次,返回第一个结果。
  • preg_match_all 匹配所有结果,返回数组,常用于批量提取。

数组操作

array_map

对数组每个元素应用回调函数。

1
2
3
$numbers = [1, 2, 3];
$squared = array_map(fn($n) => $n * $n, $numbers);
print_r($squared); // 输出: [1, 4, 9]

说明
array_map 适合批量转换数据,回调函数支持匿名函数(PHP 7.4+)。

array_filter

过滤数组元素。

1
2
3
$numbers = [1, 2, 3, 4];
$evens = array_filter($numbers, fn($n) => $n % 2 === 0);
print_r($evens); // 输出: [2, 4]

说明
array_filter 根据回调函数的返回值保留元素,适用于数据筛选。

in_array

检查元素是否存在于数组。

1
2
3
4
$fruits = ['apple', 'banana'];
if (in_array('apple', $fruits)) {
echo 'Found apple'; // 输出: Found apple
}

说明
in_array 支持严格模式(strict => true),可检查类型和值。

查询数据库

PostgreSQL 查询

注意
PostgreSQL 中列名若包含大写字母,必须用双引号("")包裹。

示例查询

查询 AmzProductDetails1 表中与特定 ASIN 相关的记录。

1
2
3
4
5
6
7
SELECT *
FROM "AmzProductDetails1"
WHERE "AmzProduct_id" IN (
SELECT id
FROM "AmzProduct1"
WHERE asin = 'B0D6NSD57S'
);

说明

  • 子查询获取 AmzProduct1 表中符合条件的 id
  • 主查询根据 AmzProduct_id 关联查询详细信息。
  • 双引号确保列名大小写正确,避免语法错误。

访问数据库

Migrate 管理和使用

数据库迁移用于管理表结构变更,确保开发与生产环境一致。

1. 创建迁移文件

在 Docker 容器中运行命令生成迁移文件。

1
docker exec -it systems_background /app/src/yii migrate/create mod_AmzInfluencerPost1_add_heart_count_columns

说明

  • 命令格式:migrate/create <迁移名称>
  • 迁移名称应清晰描述变更内容,如添加字段、修改表结构等。

2. 编辑迁移文件

生成的文件位于项目迁移目录,需实现 updown 方法。

示例迁移文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

use yii\db\Migration;

class m250411_mod_AmzInfluencerPost1_add_heart_count_columns extends Migration
{
public function safeUp()
{
$this->addColumn('AmzInfluencerPost1', 'heart_count', $this->integer()->defaultValue(0));
return true;
}

public function safeDown()
{
$this->dropColumn('AmzInfluencerPost1', 'heart_count');
return true;
}
}

注意事项

  1. 方法需返回 true(成功)或 false(失败)。
  2. 使用 safeUpsafeDown 执行事务操作,确保数据一致性。
  3. 创建索引时避免在 safeUp 中执行,可能导致事务错误,建议使用 up

3. 应用或回退迁移

执行迁移命令更新数据库。

1
2
3
4
5
# 应用所有未执行的迁移
docker exec -it systems_background /app/src/yii migrate

# 回退最近 3 次迁移
docker exec -it systems_background /app/src/yii migrate/down 3

说明

  • migrate 默认执行 up,应用新迁移。
  • migrate/down <n> 回退指定次数的迁移,执行 down 方法。

RabbitMQ 管理界面

访问 RabbitMQ 管理界面查看队列状态、消息堆积等。

PHPCS 和 PHPCBF 代码检查

确保代码符合规范,提高可读性和维护性。

PHPCS 检查代码

1
vendor/bin/phpcs --standard=PSR12 .

说明

  • --standard=PSR12 指定 PSR-12 编码规范。
  • 输出代码风格问题,如缩进、命名等。

PHPCBF 自动修复

1
vendor/bin/phpcbf --standard=PSR12 .

说明

  • 自动修复可修复的问题(如空格、换行)。
  • 复杂问题需手动调整。

在线工具

以下工具提高开发效率,适合快速格式化或转换数据。

  1. JSON 转 PHP 数组

  2. JSON 格式化

  3. HTML 渲染

  4. CSV 转 JSON


H10 PHP 开发常见操作与示例
https://kingjem.github.io/2025/04/11/h10-php开发常见操作与示例/
作者
Ruhai
发布于
2025年4月11日
许可协议