这是我的 ALX 软件工程项目组合项目。该项目是一个简单的 ORM,允许您使用 PHP 与数据库进行交互。该项目仍处于早期阶段,不建议在生产环境中使用。该项目是开源的,欢迎贡献。
Sebastian Muchui
MIT
0.1.0
您需要在计算机上安装 PHP 才能使用此软件包。如果您没有安装PHP,可以从PHP官方网站下载。
其次,确保您的机器上安装了 Composer。如果没有,您可以按照 Composer 官方网站中提供的说明进行安装。完成此操作后,您需要在项目根目录中创建一个composer.json文件并添加以下代码:
{
"minimum-stability" : " dev "
}
之后,您可以通过在终端中运行以下命令来安装该软件包:
composer require astianmuchui/ PixelSequel
ORM 包含 2 个主要部分,单独构建以实现灵活性和易用性。两部分是:
该模型是 ORM 的一部分,允许您与数据库表进行交互。它允许您执行插入、更新、查询和删除等操作。要使用模型,您需要创建模型类的新实例。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel ' ,
username: ' root ' ,
password: '' ,
dbhost: ' localhost '
);
默认情况下,设置以下值:
username
: 'root'
password
: ''
dbhost
: 'localhost'
在开发环境中,您可以将数据库名称作为唯一参数传递给模型类。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
要插入数据,只需调用Insert
静态方法即可。请注意,模型实例不需要分配给变量,因为方法将从实例化对象推断连接。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Model:: Insert (
table: ' users ' ,
data: [
' name ' => ' John Doe ' ,
' email ' => ' [email protected] '
]
);
数据数组的键必须是表中有效的列名。相应的值是要插入到表中的值。在即将推出的版本中,ORM 将能够自动从表中推断列名并在插入之前验证数据。
这里你基本上只需要调用All
方法。该方法可以采用各种参数来过滤要检索的数据。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
$ users = Model:: All (
table: ' users ' ,
where: [
' name ' => ' John Doe '
]
where_like: [
' email ' => ' gmail '
]
order_by: 'id',
order: ' DESC ' ,
limit: 10
);
table: The table to read from
where: An associative array of the column names and their values to filter the data using the where clause
where_like: An associative array of the column names and their values to perform searches
order_by: The column to order the data by
order: The order to use. Either 'ASC' or 'DESC'
limit: The number of records to retrieve
json: A boolean value to determine if the data should be returned as a json string or an array
该方法返回检索到的数据的对象。然后您可以循环访问该对象以获取数据。如果将限制设置为 1,则需要选择对象的第 0 个索引才能获取数据。通常,开发此功能的关键目标之一是使单个函数可以执行所有选择功能。还有其他 select 方法,但请忽略它们,因为它们写得不好,将在将来的版本中删除。
update方法基本上是Insert方法的复制品,但是必须传入标识行的参数类型及其值
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Model:: Update (
table: ' users ' ,
param_t: ' id '
param_n: 1 ,
data: [
' name ' => ' John Doe ' ,
' email ' => ' [email protected] '
]
);
param_t
是参数类型,通常是列名。 param_n
是参数类型的值。
Delete
方法用于从数据库中删除数据。它采用表名称以及参数类型和值来标识要删除的行。
use PixelSequel Model Model ;
new Model (
dbname: ' pixel_sequel '
);
Model:: Delete (
table: ' users ' ,
param_t: ' id '
param_n: 1
);
模式是 ORM 的一部分,允许您与数据库表进行交互。它允许您执行创建、更新和删除表等操作。要使用模式,您需要创建模型类的实例并将数据库连接传递给模式类。请注意,模型实例不需要分配给变量和模式
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
可以通过调用模型类上的Connected
方法来检查连接。该方法返回一个布尔值。
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
if (Model:: Connected ())
{
new Schema (
Model:: Connection ()
);
echo ' Connected ' ;
}
else
{
echo ' Not Connected ' ;
}
建立连接后,您可以通过调用架构类的Create
方法来创建表。该方法接受表名以及列名及其数据类型的关联数组。
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Schema:: Create (
table: ' pxtest ' ,
structure: [
" id " => [
" type " => " int " ,
" length " => 11 ,
" primary_key " => true
],
" username " => [
" type " => " varchar " ,
" length " => 11 ,
" null " => false
]
]
);
结构体数组的键必须是表中有效的列名。相应的值是列数据类型及其属性的关联数组。属性是:
type: The data type of the column
length: The length of the column
primary_key: A boolean value to determine if the column is a primary key
null: A boolean value to determine if the column can be null
auto_increment: A boolean value to determine if the column is auto increment
Alter
方法用于更改表。它接受三个参数:表名、列名和要设置的内容
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Schema:: Alter (
table: ' pxtest ' ,
column: ' username '
set: " int(255) NOT NULL "
);
Drop
方法用于删除表。它接受表名称作为参数。
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Schema:: Drop (
table: ' pxtest '
);
要断开与数据库的连接,可以调用模型类的Disconnect
方法。
use PixelSequel Model Model ;
use PixelSequel Schema Schema ;
new Model (
dbname: ' pixel_sequel '
);
new Schema (
Model:: Connection ()
);
Model:: Disconnect ();
欢迎贡献。您可以通过分叉存储库并发出拉取请求来做出贡献。如果您发现任何错误或有任何功能请求,也可以提出问题。