jek / psm
为本地数据库连接添加一层小巧而强大的抽象层
Requires
- php: ^5.3.3 || ^7.0
This package is not auto-updated.
Last update: 2024-09-26 19:44:31 UTC
README
简介
PSM 是一个 PDO (PHP 数据库对象) 重写,为您的数据库连接添加另一层抽象,而不会降低性能。
PSM 努力为您找到最快和最节省代码的解决方案,创建易于阅读的语句,这些语句可以轻松集成到任何环境中,从允许无 SQL 注入的自动绑定查询到创建链式函数构建语句然后执行结果!
安装
PSM3 默认包含 3 个主要文件,以及一个可选的第四个文件。这些文件位于项目的 classes 文件夹中,文件(按顺序加载)为 PSMExtra、PSMQuery 和 PSMMain。
创建 PSM3 类实例有两种方法,您可以在构造函数中连接到数据库,也可以创建类实例然后稍后连接。 - 这在 PSM 的旧版本中是不可能的。(第三种选项是数据库迁移)
开始之前,请确保已包含您的文件!:
require_once('classes/PSMExtra.php'); require_once('classes/PSMQuery.php'); require_once('classes/PSMMain.php');
直接从构造函数连接
$psm = new PSM('HOSTNAME DATABASE USERNAME PASSWORD'); // If your password is empty, use the 'EM' keyword in password to emulate an empty space. $psm->version();
创建实例后连接
$psm = new PSM; $psm->connect('HOSTNAME DATABASE USERNAME PASSWORD'); $psm->version();
使用胶囊连接
// A capsule is a simple string generated by $psm->capsule() when on a server running PSM. $psm = new PSM; // Capsule would be generated from another server. $capsule = "PSM_DB_CAPSULE{HOSTNAME::DATABASE::USERNAME::PASSWORD}"; $psm->decapsule($capsule);
就这样!一个简单的 PSM 连接!创建实例的任何 3 种解决方案都总是很快,您可以通过以下方式轻松获取 PDO 处理程序
$pdo = $psm->handler;
因此,这始终可以用作生成 PDO 处理程序的一种方法。
文档
在创建新的 PSM 对象时,您会得到很多函数 😏
如果您不太了解 PHP OOP,我建议您了解类和函数是如何一起工作的,您可以在这里了解它 - php manual 或 - youtube 教程
像我们之前展示的那样创建一个简单的 PSM 对象,然后我们可以继续!
如何添加驱动
$psm = new PSM('localhost test root EM',[ 'safeconnection' => false ]);
驱动程序是我从未花很多时间使用/创建的东西,但如果添加到 PR 中,将会受到赞赏。
PSM3 函数分析
更多关于胶囊(以及序列化 PSM 变量)
将字符串放在另一个服务器上作为服务器使用,这似乎没有什么用,对吗?
但是,这并不是构建胶囊函数的主要目标,目标是将胶囊数据存储起来以供以后重新构建连接,但现在有更简单的方法来做这件事,所以我将向您展示两种方法。(请勿在会话中存储数据库连接器之类的信息,请不要这样做,这只是一个示例)
$_SESSION['psm'] = $psm->capsule(); $psm = false; // do some stuff over pages . . . // oo! we need psm again! $psm = new PSM; $psm->decapsule($_SESSION['psm']); $psm->version();
但这有点...边缘...所以用这种方式!
$psm->close(); $_SESSION['psm'] = $psm; // do some stuff over pages . . . // oo! we need psm again! $psm = $_SESSION['psm']->open(); $psm->version();
这样您就存储了整个类在变量中,更安全!
链式调用
PSM 有一个很好的半函数集用于链式调用,允许您快速创建易于阅读的语句。
这是 PSM 链式函数在首次集成时的样子,还有更多内容!
// SELECT username FROM users WHERE id < ? ORDER BY id DESC LIMIT 2 // (v = DESC, ^ = ASC) $psm->select(['users','username'])->where('id < 5')->order('v', 'id')->limit(2)->run(function($row){ print_r($row); });
在构建语句之后,在 run 中提供的回调函数中循环行,简单!