sakuraiyuta/fuel-orientdb

FuelPHP 的 OrientDB 连接管理器

dev-master 2013-02-10 06:30 UTC

This package is not auto-updated.

Last update: 2024-09-28 13:51:15 UTC


README

fuel-orientdb 是一个用于与 FuelPHP 一起使用 OrientDB 的库。

这个库仍然是 实验性的。你不应该在生产环境中使用。

目录

功能

TODO:实现

安装

  • 安装并执行 OrientDB
  • 在新的目录中创建 FuelPHP 项目。(你可以使用任何安装方法,例如:使用 git-clone,手动下载并解压缩 tarball)
  • 安装 composer
  • 在项目目录中,创建 composer.json 文件。强烈推荐:将 vendor-dir 设置为 fuel/app/vendor,并将 minimum-stability 设置为 dev。(因为它使用 doctrine/orientdb-odm 开发版本)例如
{
	"config" : {
		"vendor-dir" : "fuel/app/vendor"
	},
	"minimum-stability" : "dev",
	"require" : {
		"sakuraiyuta/fuel-orientdb" : "dev-master"
	}
}
  • 执行 composer install。此命令将下载库和依赖项。
  • 更改权限,使 HTTP 服务器可写 "project-dir"/fuel/app/vendor/sakuraiyuta/fuel-orientdb/tmp。例如:chmod 777 "project-dir"/fuel/app/vendor/sakuraiyuta/fuel-orientdb/tmp
  • 修改你的应用程序引导文件。目标文件是 "project-dir"/fuel/app/bootstrap.php。在 Autoloader::add_classes() 行中添加一些类。例如
Autoloader::add_classes(array(
	// Add classes you want to override here
	// Example: 'View' => APPPATH.'classes/view.php',
	"Fuel\\Core\\OrientDB" => APPPATH . "vendor/sakuraiyuta/fuel-orientdb/src/Fuel/Core/OrientDB.php",
	"Fuel\\Core\\Database_Orientdb_Connection" => APPPATH . "vendor/sakuraiyuta/fuel-orientdb/src/Fuel/Core/Database_Orientdb_Connection.php",
));
  • (可选)你可以创建实体类来映射记录到对象。
  • 最后,你必须配置数据库连接设置。

配置

你可以使用 FuelPHP 的通用配置文件配置数据库连接设置,也可以使用 dsn 语法。

目标文件是 "project-dir"/fuel/app/config/{development,staging,test,production}/db.php。例如

return array(
	'default' => array(
		'type'       => 'orientdb',
		'entity_dir' => __DIR__ . '/../test/Entity/',
		'connection'  => array(
			'dsn'        => 'orientdb:host=localhost;dbname=school-manager;port=2480',
			'username'   => 'admin',
			'password'   => 'admin',
		),
	),
);
  • $config["default"]["type"] 是常规值 orientdb。不要更改。
  • (可选)$config["default"]["entity_dir"] 是由对象-文档映射器读取的目录。默认为 "project-dir"/fuel/app/classes/Entity。有关详细信息,请参阅:对象-文档映射
  • $config["default"]["connection"]["dsn"] 可以拆分一些部分。表达式为 "dbtype":host="yourdbhostname";dbname="yourdbname";port="yourdbport"
    • dbtype 是常规值 orientdb。不要更改。
    • host 是运行 OrientDB 的主机名(或 IP 地址)。
    • dbname 是你想要使用的数据库名称。
    • port 是连接 OrientDB 你想要使用的端口。
  • $config["default"]["connection"]["username"] 是你想要用于连接数据库的用户名。
  • $config["default"]["connection"]["password"] 是你想要用于连接数据库的密码。

如何使用

使用原始 SQL+ 查询

你可以在 FuelPHP 控制器中使用由 OrientDB 提供的 SQL+ 查询。

注意:你只能使用 SELECT 语句。执行 INSERT、UPDATE 和 DELETE 语句的功能尚未实现。

// ex: Using FuelPHP DB class.
// In DB class, creates instance Database_Orientdb_Connection and execute query.
// This returns array contains stdClass object. These objects contains properties.
$result = DB::query("SELECT * FROM User");
var_dump($result);

使用类似 FuelPHP 的查询构建器

$result = OrientDB::insert("User")
	->set(
		array(
			"username" => "testuser",
			"password" => "hashedpassword",
		)
	)->execute();
var_dump($result);

使用原始 orientdb-odm 管理器

如果你想要使用一个功能,将记录映射到对象,请按照以下方式进行

// ex: Using raw OrientDB class.
// The class extends FuelPHP DB class (but many methods are not implemented yet).
// This returns array contains User object. These objects are mapped to records.
$result = OrientDB::get_manager()
	->getRepository("User")
	->findAll();
var_dump($result);

对象-文档映射

你需要为映射实体创建 User 类。

说明如下

  • "project-dir"/fuel/app/classes/ 中创建 Entity 目录。
    • (可选)你可以更改配置中的实体目录。另请参阅:配置
  • 在该目录中创建实体文件。例如:User.php
  • 在实体文件中编写详细信息。这需要包含注解。例如
// Need definition of namespace "Entity" for autoloading.
namespace Entity;

use Doctrine\ODM\OrientDB\Mapper\Annotations as ODM;

/**
* @ODM\Document(class="User")
*/
class User
{
    /**
     * @ODM\Property(name="@rid", type="string")
     */
    protected $rid;

    /**
     * @ODM\Property(type="string", notnull="true")
     */
    protected $username;

    /**
     * @ODM\Property(type="string", notnull="true")
     */
    protected $password;

    public function getUsername()
    {
        return $this->username;
    }

    public function setUsername($username)
    {
        $this->username = $username;
    }

    public function getPassword()
    {
        return $this->password;
    }

    public function setPassword($password)
    {
        $this->password = $password;
    }

    public function getRid()
    {
        return $this->rid;
    }

    public function setRid($rid)
    {
        $this->rid = $rid;
    }
}

测试

这个库使用 PHPUnit 进行测试。如果你想修改或为此做出贡献,请使用包含库的 PHPUnit 引导和配置。说明如下

  • 正常安装此库。查看详情:安装
  • 配置数据库设置。将config_phpunit/db.php.sample复制到config_phpunit/db.php并修改设置。PHPUnit 使用这些配置来连接数据库。
  • 检查phpunit.xml并根据需要修改设置。
  • fuel-orientdb目录下执行phpunit test

您可以使用生成器来生成测试类(需要phpunit-skelgen。您可以使用 PEAR 安装。)

与测试相关的目录和文件如下

bootstrap_phpunit.php // bootstrap for PHPUnit. This prepares fixtures PHPUnit allows to call FuelPHP features.
phpunit.xml // This supplies env-variables that includes directory informations.

config_phpunit/ // contains database settings for testing CRUD. written in FuelPHP common config scheme.
├── db.php
└── db.php.sample
test
├── Entity // contains entity-class for testing Object-Document mapping.
│   └── TestClass.php
└── ... // test codes under the directory.

另请参阅

  • FuelPHP 是一个简单、灵活、社区驱动的 PHP 5.3+ 框架。
  • Composer 是一个用于 PHP 依赖管理的工具。查看文档并理解 Composer 中的自动加载机制。
  • OrientDB 是一个具有文档和图数据库管理功能的开源 NoSQL DBMS。
  • Doctrine Project,用于学习 ORM 和 ODM 的概念。
  • orientdb-odm,在此库中使用。
  • CongowOrient 是一套 PHP 库,用于从 PHP 使用 OrientDB。它与这个(或 orientdb-odm)库不完全相同,但看起来大致相同。
  • 开始使用 Doctrine OrientDB ODM,由 Alessandro Nadalin 编写,是学习使用此库的好文章。(使用 Smarty 框架和原始 orientdb-odm 库创建项目是先决条件,但即使使用 FuelPHP,某些段落也很有用。)