shish / ffsphp
针对愚蠢的PHP问题的解决方案集合
v1.3.3
2024-08-31 23:18 UTC
Requires
- php: ^8.2
- ext-pdo: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.64
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^11.0
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"