bgillet/slim-orm

基于Idiorm & Paris的Slim框架ORM。

1.1.0 2015-01-29 16:19 UTC

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
    • 当然,您必须在导入此之前先导入SlimParis引导类到您的代码中
  • 从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>';
}

以下是测试预期的结果

Sample of expected test result

使用步骤如下

  1. 将ORM连接及其参数添加到Slim的配置数组中。
  2. 创建您的Slim应用程序实例。
  3. 使用SlimORM::register()方法配置并注册ORM,在Slim应用程序中的$app->db下。
  4. 然后使用任何$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 : 适用于该连接参数的名称。