bgillet / slim-orm
基于Idiorm & Paris的Slim框架ORM。
Requires
- bgillet/slim-utils: ~1.3
- j4mie/paris: ~1.5
- slim/slim: ~2.4
This package is not auto-updated.
Last update: 2024-09-24 03:44:02 UTC
README
此包包含对Idiorm & Paris ORM的包装。
要求
此包与以下兼容
- Slim-Utils 1.3或更高版本
- Slim 2.4或更高版本
- Paris 1.5或更高版本
安装
您有两种选择
-
从GitHub下载
- 您只需要从
src
文件夹包含一个类,名为BenGee\Slim\Db\SlimORM
- 当然,您必须在导入此之前先导入
Slim
和Paris
引导类到您的代码中
- 您只需要从
-
从Composer下载
- 将
bgillet/slim-orm
包添加到您的composer.json
- 然后只需像往常一样包含您的
vendor/autoload.php
文件,操作完成
- 将
配置
在您的Slim配置中,按照以下设置您的连接参数
$config = array
(
SlimORM::CONNECTIONS => array
(
SlimORM::DEFAULT_CNX => array
(
SlimORM::DSN => 'mysql:host=localhost;port=3306;dbname=slim1',
SlimORM::USR => 'root',
SlimORM::PWD => '',
SlimORM::OPT => null
),
'named_connection' => array
(
SlimORM::DSN => 'mysql:host=localhost;port=3306;dbname=slim2',
SlimORM::USR => 'root',
SlimORM::PWD => '',
SlimORM::OPT => null
)
)
);
以下是每个参数的解释
SlimORM::CONNECTIONS
- 连接到一个或多个数据库的连接数组
SlimORM::DEFAULT_CNX
- ORM在未指定时使用的默认连接配置数组名称的快捷方式
named_connection
- 指定命名连接的配置数组
SlimORM::DSN
- ORM连接到数据库使用的PDO兼容连接字符串
SlimORM::USR
- 连接到数据库使用的登录名
SlimORM::PWD
- 连接到数据库使用的密码
SlimORM::OPT
- 用于PDO驱动的额外连接参数
SlimORM::CACHE
- 查询缓存激活参数(默认:false)
SlimORM::CACHE_CLEAN
- 查询缓存自动清理激活参数(默认:false)
SlimORM::LOG
- 查询日志激活参数(默认:false)
SlimORM::LOG_FNC
- 查询日志函数参数。这允许您设置自己的可调用函数来记录您的查询。有关更多详细信息,请参阅Idiorm文档。
SlimORM::RES_SET
- 连接的返回结果方法参数。这允许您选择结果如何返回(数组或结果集)。默认情况下,结果以数组形式返回。
SlimORM::ERR_MOD
- PDO错误模式参数。接受一个PDO错误模式常量(默认:PDO::ERRMODE_EXCEPTION)。
SlimORM::QOT_CAR
- 标识符引号字符参数。默认情况下自动检测。
SlimORM::ID_COL
- 默认ID列名称参数。允许您为ORM使用的每个表定义主键名称(默认:'id')。
SlimORM::ID_OVR
- 允许您配置一组表的主键名称,作为键名为表名、值为主键名称的数组。默认情况下,此参数未指定,并使用默认的'id_column'参数值。
SlimORM::LIM_STY
- 允许您定义连接的limit子句样式(TOP或LIMIT)。默认情况下,此参数未指定,并且检测子句样式。
所有这些常量都对应于Idiorm或Paris中可用的参数。如果有一个或多个缺失,您仍然可以使用详细的SlimORM::configure()
静态方法。这是Idiorm的configure()
方法的快捷方式。有关可用参数的更多详细信息,请参阅http://idiorm.readthedocs.org/en/latest/configuration.html的Idiorm文档或http://paris.readthedocs.org/en/latest/configuration.html的Paris文档。
如何使用
让我们看一下下面的示例代码
<h1>SlimORM test page</h1>
<?php
require __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
require 'User.php';
use \BenGee\Slim\Db\SlimORM;
try
{
// Configure connections through Slim's configuration array
$config = array
(
SlimORM::CONNECTIONS => array
(
SlimORM::DEFAULT_CNX => array
(
SlimORM::DSN => 'mysql:host=localhost;port=3306;dbname=slim1',
SlimORM::USR => 'test',
SlimORM::PWD => '',
SlimORM::OPT => null
),
'named_connection' => array
(
SlimORM::DSN => 'mysql:host=localhost;port=3306;dbname=slim2',
SlimORM::USR => 'test',
SlimORM::PWD => '',
SlimORM::OPT => null
)
)
);
// Create an instance of your Slim application
$app = new \Slim\Slim($config);
// Register the ORM in the app.
// It will configure itself using settings set inside Slim's configuration array.
SlimORM::register($app);
// Get a reference to the 'user' table through Idiorm and get contents.
$users1 = $app->db->table('user')->find_many();
// Get a reference to you own 'User' model class through Paris and get contents.
$users2 = $app->db->model('User', 'named_connection')->find_many();
// Display results
$app->get('/', function() use($users1, $users2)
{
echo '<h3>Test using Idiorm and accessing data directly using table name on default connection</h1>';
echo '<p>' . count($users1) . ' users found</p>';
if (!empty($users1))
{
echo '<ul>';
foreach ($users1 as $user)
{
echo '<li>' . $user->username . ' (' . $user->id . ')</li>';
}
echo '</ul>';
}
echo '<h3>Test using Paris and accessing data using model class on named connection</h1>';
echo '<p>' . count($users2) . ' users found</p>';
if (!empty($users2))
{
echo '<ul>';
foreach ($users2 as $user)
{
echo '<li>' . $user->username . ' (' . $user->id . ')</li>';
}
echo '</ul>';
}
});
// Run the Slim app
$app->run();
}
catch (\Exception $e)
{
echo 'An exception occurred while testing !';
echo '<div><pre>' . $e . '</pre></div>';
}
以下是测试预期的结果
使用步骤如下
- 将ORM连接及其参数添加到Slim的配置数组中。
- 创建您的Slim应用程序实例。
- 使用
SlimORM::register()
方法配置并注册ORM,在Slim应用程序中的$app->db
下。 - 然后使用任何
$app->db->table()
或$app->db->model()
方法,具体取决于您想使用哪个ORM(无论是Idiorm还是Paris)。一旦您获取了表或模型的引用,您就可以使用相应ORM中可用的方法。
API
类\BenGee\Slim\Db\SlimORM
public static function register(\Slim\Slim $app)
-
静态方法,用于在给定的Slim应用程序中注册ORM包装器。通过
$app->db
使ORM可用,并确保其为单例。当ORM的唯一实例被创建时,默认构造函数将查找在父Slim应用程序配置中名为'slim.orm.connections'
的设置下的连接列表。连接必须使用连接名称作为键,并使用另一个数组定义连接参数。 -
SlimORM::CONNECTIONS => array( SlimORM::DEFAULT_CNX => array( SlimORM::DSN => 'mysql:host=localhost;port=3306;dbname=test', SlimORM::USR => 'user', SlimORM::PWD => 'password', SlimORM::OPT => 'some_options', ), 'connection2' => array( ... ) );
-
如果没有为连接参数数组指定名称,则配置的连接被视为默认连接。
-
参数
\Slim\Slim $app
: 父级Slim应用程序的引用。
-
private function __construct(\Slim\Slim $app)
- 私有默认构造函数。在构造过程中,它会查找父应用程序配置中的连接设置,并在找到时设置它们。
- 参数
\Slim\Slim $app
: 父级Slim应用程序的引用。
public function app()
- 返回父级Slim应用程序的引用。
public function resetConnections()
- 重置Idiorm和Paris中所有配置的连接。
public function setConnection($dsn, $usr = false, $pwd = false, $opt = null)
- 在Idiorm & Paris中配置一个唯一的默认连接。调用此方法将首先重置所有现有连接。
- 参数
string $dsn
: 到数据源的连接字符串。string $usr
: 用于连接数据源的用户名或false(默认),如果没有识别需求。string $pwd
: 用于连接数据源的密码或false(默认),如果没有识别需求。string $opt
: 附加的连接选项或null(默认),如果没有。
- 异常
\ErrorException
: 如果DSN为空或不是字符串。
public function addConnection($dsn, $usr = false, $pwd = false, $opt = null, $name = false)
- 向Idiorm & Paris中现有的连接添加一个新的连接。每个连接都由方法参数中给出的名称识别。如果没有给出名称,则配置默认连接而不删除那些已存在的。
- 参数
string $dsn
: 到数据源的连接字符串。string $usr
: 用于连接数据源的用户名或false(默认),如果没有识别需求。string $pwd
: 用于连接数据源的密码或false(默认),如果没有识别需求。string $opt
: 附加的连接选项或null(默认),如果没有。string $name
: 连接的名称或false(默认)以配置默认连接。
- 异常
\ErrorException
: 如果DSN为空或不是字符串。
public function model($model, $connection = self::DEFAULT_CNX)
- 使用给定的命名连接创建给定模型类的实例。
- 参数
string $model
: 模型的完全限定类名。string $connection
: 用于在Paris ORM中注册连接的名称。
- 结果
\BenGee\Slim\Db\SlimModel
: 请求的模型类的实例。
public function table($table, $connection = self::DEFAULT_CNX)
- 使用给定的命名连接在给定的表上创建一个Idiorm查询。
- 参数
string $table
: 要查询的表名。string $connection
: 用于在Idiorm / Paris ORM中注册连接的名称。
- 结果
- 使用请求的连接请求的表上的Idiorm查询。
public static function configure($key, $value = null, $connection_name = self::DEFAULT_CNX)
- 内部ORM配置方法的快捷方式。
- 参数
string $key
: 参数的名称。mixed $value
: 参数的值。string $connection_name
: 适用于该连接参数的名称。