pomm / pomm-service-provider
Silex µ框架的Pomm服务提供者。
1.2.0
2014-04-02 10:21 UTC
Requires
- pomm/pomm: 1.2.*
- silex/silex: ~1.0
Replaces
- ghub/pomm-service-provider: *
README
安装
安装 PommServiceProvider 有多种方式。最简单的一种是使用以下脚本 此脚本。它将创建目录树结构和你的 composer.json 文件(见下文Composer部分)。
Composer
Composer 是安装和运行服务提供者的最简单方式。只需在 composer.json 中添加以下内容
"pomm/pomm-service-provider": "dev-master"
到 require 部分。调用「 composer.phar install」 应该会与 Pomm 库一起安装。
Git子模块
如果你使用git,请使用子模块
$ mkdir vendor $ git submodule add git://github.com/chanmix51/PommServiceProvider.git vendor/ghub/PommServiceProvider $ git submodule add git://github.com/chanmix51/Pomm.git vendor/pomm
否则,你只需下载存档,将其展开在子目录中,并告诉自动加载器 GHub\Silex\Pomm 命名空间位于 src 项目子目录下。
使用Pomm服务
建议将你的应用程序分成3个文件
- bootstrap.php
- 在此文件中加载和配置扩展
- application.php
- 在此文件中定义你的控制器。
- generate_model.php
- 这是用于扫描postgresql的架构并生成模型文件的CLI工具。
这样,index.php 文件将简化到最简单的表达式
<?php #index.php require(__DIR__.'/../application.php'); $app->run();
application.php 本身仅由你的控制器组成。它通过包含 bootstrap.php 文件来包含配置
<?php #bootstrap.php
require_once __DIR__.'/vendor/autoload.php';
$app = new Silex\Application();
// EXTENSIONS
...
# pomm
$app->register(
new Pomm\Silex\PommServiceProvider(),
array(
'pomm.class_path' => __DIR__.'/vendor/pomm',
'pomm.databases' => array(
'default' => array(
'dsn' => 'pgsql://user:pass@host:port/dbname',
)))
);
PommServiceProvider 类接受以下参数
- pomm.class_name:这是要使用的服务类(可选)默认为
Pomm\Service。给定的服务类必须扩展Pomm\Service。- pomm.databases:一个格式为
'name' => array('dsn' => $dsn, 'class' => 'My\\Database\\Class')的数据库数组。
扩展将为每个连接实例化数据库类,这意味着它不会打开连接。如果在连接中执行语句,则会打开连接。如果你想使用自己的数据库类,请提供其在 class 参数中的完整路径。默认情况下,此参数设置为 Pomm\Connection\Database。
在上面的例子中,我们向自动加载器注册了一个 Model 命名空间,因此生成的文件将放置在 Model\DbName\SchemaName 命名空间中。
生成映射文件
创建以下脚本
<?php #generate_model.php
require __DIR__.'/bootstrap.php';
$scan = new Pomm\Tools\ScanSchemaTool(array(
'schema' => 'YOUR SCHEMA',
'database' => $app['pomm']->getDatabase(),
'prefix_dir' => __DIR__.'/Model',
));
$scan->execute();