paigejulianne / picoorm
PicoORM:一个非常轻量级的ORM
Requires
- php: >=8.0
- ext-pdo: *
README
PicoORM:适用于PHP 8.0+的非常轻量级的ORM
作者:Paige Julianne Sullivan paige@paigejulianne.com
背景
回到2010年,我正在构建一个需要大量数据库调用的托管VOIP PBX。我希望尽可能简单,而不需要导入一个庞大的ORM(你知道我在说什么)。我写了这段代码,并且多年来一直在对其进行持续改进。
贡献、问题和支持
欢迎你对源代码的贡献。请随意fork存储库并提交拉取请求。对于支持和问题,请使用GitHub问题跟踪器https://github.com/paigejulianne/picoorm/issues
你还可以在GitHub讨论页面上找到更多信息https://github.com/paigejulianne/picoorm/discussions
最后,你可以在我的博客上找到更多信息和相关教程https://paigejulianne.com/?s=picoorm
安装
通过composer
在您的CLI中执行以下命令
composer require paigejulianne/picoorm
通过直接下载
将PicoORM.php文件下载到您的源目录中,并包含它。
include_once("PicoORM.php");
使用方法
设置PDO连接
$GLOBALS['_PICO_PDO'] = new PDO("mysql:host=hostname;dbname=database_name;","database_user","database_password");
继承PicoORM类
要开始使用表,只需扩展PicoORM类,将您的类命名为与表名相同的名称。例如,要使用名为users的表,您将创建一个名为Users的类,它扩展PicoORM。注意:如果使用MySQL或MariaDB,类/表名不区分大小写。其他数据库可能区分大小写。
注意:从版本1.7.1-alpha开始,此类的命名空间为PaigeJulianne\PicoORM
use PaigeJulianne\PicoORM;
class Users extends PicoORM {
// your code here
}
PicoORM将假设表可以找到在PDO连接中指定的数据库中。如果您需要指定不同的数据库,可以通过在类名中添加前缀来实现。例如,如果您有一个名为users的表在名为mydatabase的数据库中,您将创建一个名为mydatabase\Users的类,它扩展PicoORM。示例
use PaigeJulianne\PicoORM;
class mydatabase\Users extends PicoORM {
// your code here
}
从数据库加载记录
只需将主键值作为参数调用构造函数。例如,如果您的表有一个名为id的主键,您将像这样调用构造函数
$user = new Users(1);
使用不同的列作为主键从数据库加载记录
如果您的表使用不同的列作为主键,您可以将该列名指定为构造函数的第二个参数。例如,如果您的表有一个名为user_id的主键,您将像这样调用构造函数
$user = new Users(1,"user_id");
使用不同的列作为主键和不同的数据库从数据库加载记录
$user = new mydatabase\Users(1,"user_id");
创建新记录
要创建新记录,只需不带参数调用构造函数。例如
$user = new Users();
保存记录
要保存记录,只需调用save()方法。例如
$user->save();
删除记录
要删除记录,只需调用delete()方法。例如
$user->delete();
设置字段值
要设置字段值,只需设置属性。例如
$user->first_name = "Paige";
在调用 save() 方法或对象被销毁(超出作用域或脚本结束)之前,字段值不会保存到数据库中。
获取字段值
要获取字段值,只需获取属性。例如
echo $user->first_name;
使用自定义 SQL 查询
要使用自定义 SQL 查询,只需调用 query() 方法。例如
$user = new Users();
$user->query("SELECT * FROM __DB__ WHERE first_name = ? AND last_name = ?",["Paige","Sullivan"]);
注意:占位符 __ DB __ 将被替换为表名。例如,如果您的表名为 users,则查询将执行为
SELECT * FROM users WHERE first_name = ? AND last_name = ?
使用不同数据库的自定义 SQL 查询
$user = new mydatabase\Users();
$user->query("SELECT * FROM __DB__ WHERE first_name = ? AND last_name = ?",["Paige","Sullivan"]);