jek/psm

为本地数据库连接添加一层小巧而强大的抽象层

dev-master 2017-05-19 03:57 UTC

This package is not auto-updated.

Last update: 2024-09-26 19:44:31 UTC


README

简介

PSM 是一个 PDO (PHP 数据库对象) 重写,为您的数据库连接添加另一层抽象,而不会降低性能。

PSM 努力为您找到最快和最节省代码的解决方案,创建易于阅读的语句,这些语句可以轻松集成到任何环境中,从允许无 SQL 注入的自动绑定查询到创建链式函数构建语句然后执行结果!

安装

PSM3 默认包含 3 个主要文件,以及一个可选的第四个文件。这些文件位于项目的 classes 文件夹中,文件(按顺序加载)为 PSMExtraPSMQueryPSMMain

创建 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 中提供的回调函数中循环行,简单!