shish/ffsphp

针对愚蠢的PHP问题的解决方案集合

v1.3.3 2024-08-31 23:18 UTC

README

因为现在是 $CURRENT_YEAR,我仍在遇到几年前就遇到过的相同的PHP问题...

特性

PDO:

示例用法

use \FFSPHP\PDO;
$db = new PDO($dsn, $driver_options);
var_dump($db->execute("SELECT * FROM mytable LIMIT :limit", ["limit"=>3])->fetchAll());
  • 修改了PDO构造函数,使MySQL后端可以像其他所有后端一样接受用户名和密码作为DSN的一部分。

  • 添加了 PDO::execute($query, $parameters),这样就可以编写模板化查询,而无需创建单个使用的预处理语句。

  • 使 PDOStatement::execute($parameters) 使用类型绑定,所以 "LIMIT :foo", ["foo"=>3] 被渲染为 LIMIT 3 而不是 LIMIT '3'

路径:

use \FFSPHP\Paths;

Paths::abspath("./foo");  # /my/dir/foo
Paths::relative_path("out/output.txt", "my/dir/input.txt");  # ../../out/output.txt

VLQ:

use \FFSPHP\VLQ;

VLQ::decode_vlq_array("IAAM");  # [4,0,0,6]
VLQ::encode_vlq_array([4,0,0,6]);  # "IAAM"