sakuraiyuta / fuel-orientdb
FuelPHP 的 OrientDB 连接管理器
dev-master
2013-02-10 06:30 UTC
Requires
- php: >=5.3.3
- doctrine/orientdb-odm: dev-master
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,某些段落也很有用。)