net_bazzline / php_propel_behavior_entity_instantiator
该包已被弃用,不再维护。没有建议的替代包。
这个自由免费的特性,简化了propel的实体实例化
3.0.0
2020-07-15 12:44 UTC
Requires
- php: >=7.4
- mikey179/vfsstream: dev-master
- phpunit/phpunit: ^7.0|^8.0
- propel/propel1: @dev
Requires (Dev)
- symplify/easy-coding-standard: ^6.1@dev
README
我仍然喜欢这个想法,但目前没有开发它的用例。
Propel 实体实例化生成器行为
这个自由免费的特性,简化了你的 propel 查询和对象类的实体实例化。
感谢 ExtraPropertiesBehavior 作为这样一个优秀的模板。
可在 openhub.net 获取。
如果您想更详细地控制事物,请查看 php 定位器生成组件 及其 propel 示例
当前的变更日志可在 此处 找到。
原因
- 代码中不再有
new
- 代码中不再有静态的
Query::create
调用 - 简化了编写测试代码(
createMyEntity
和createMyEntityQuery
可进行模拟)
用法
- 如果您想运行phpunit,请确保已启用
extension=pdo_sqlite.so
- 此行为会创建一个实例化类和文件
- 此行为有以下参数
entity_instantiator_add_to_entity_instantiator
- ("true"|"false") 允许添加或不添加此表到实例化器,默认为true
entity_instantiator_class_name
- (字符串) 代表类名,默认为DatabaseEntityInstantiator
entity_instantiator_extends
- (字符串) 代表完全限定类名,默认为空entity_instantiator_indention
- (字符串) 代表实例化器中的缩进,默认为entity_instantiator_namespace
- (字符串) 代表实例化器中的命名空间,默认为空(无命名空间)entity_instantiator_path_to_output
- (字符串) 代表实例化器文件的输出路径(相对于vendor/../
),默认为data
entity_instantiator_method_name_prefix
- (字符串) 代表实例化器中每个实例化方法的名称前缀,默认为create<DatabaseName>
entity_instantiator_default_connection_mode
- (字符串) 代表Propel::getConnection($name, $mode)中第二个可选参数的内容entity_instantiator_default_connection_name
- (字符串) 代表Propel::getConnection($name, $mode)中第一个可选参数的内容entity_instantiator_use_fully_qualified_name
- ("true"|"false") 允许在完全限定名和类名之间切换使用,默认为false
示例
给定以下设置的数据库
<database name="exampleDatabase"> <behavior name="add_to_entity_instantiator"> <parameter name="entity_instantiator_class_name" value="MyEntityInstantiator" /> <parameter name="entity_instantiator_extends" value="MyAbstractEntityInstantiator" /> <parameter name="entity_instantiator_indention" value=" " /> <parameter name="entity_instantiator_namespace" value="Database\Service" /> <parameter name="entity_instantiator_path_to_output" value="module/Database/src/Database/Service" /> <parameter name="entity_instantiator_method_name_prefix" value="create" /> <paramater name="entity_instantiator_default_connection_name" value="exampleDatabase" /> <paramater name="entity_instantiator_default_connection_mode" value="Propel::CONNECTION_READ" /> <paramater name="entity_instantiator_use_fully_qualified_name" value="true" /> </behavior> <table name="user"> <column name="id" type="INTEGER" primaryKey="true" autoincrement="true" /> <column name="name" type="VARCHAR" size="255" /> <!-- turn it on - default --> <behavior name="add_to_entity_instantiator"> <parameter name="entity_instantiator_add_to_entity_instantiator" value="true" /> </behavior> </table> <table name="product"> <column name="id" type="INTEGER" primaryKey="true" autoincrement="true" /> <column name="name" type="VARCHAR" size="255" /> <!-- turn it on --> <behavior name="add_to_entity_instantiator"> <parameter name="entity_instantiator_add_to_entity_instantiator" value="false" /> </behavior> </table> </database>
将在路径module/Database/src/Database/Service
中创建一个名为MyEntityInstantiator.php
的文件,内容如下。
<?php namespace Database\Service; use PDO; use Propel; /** * Class MyEntityInstantiator * * @author Net\Bazzline\Propel\Behavior\EntityInstantiatorNet\Bazzline\Propel\Behavior\EntityInstantiator\EntityInstantiatorGenerator * @since 2015-08-29 * @see http://www.bazzline.net */ class MyEntityInstantiator extends MyAbstractEntityInstantiator { /** * @return PDO */ public function getConnection($name = 'exampleDatabase', $mode = \Propel::CONNECTION_WRITE) { return Propel::getConnection($name, $mode); } /** * @return \Database\User */ public function createUser() { return new \Database\User(); } /** * @return \Database\UserQuery */ public function createUserQuery() { return new \Database\UserQuery::create(); } }
安装
手动安装
mkdir -p vendor/net_bazzline/php_propel_behavior_entity_instantiator
cd vendor/net_bazzline/php_propel_behavior_entity_instantiator
git clone https://github.com/bazzline/php_propel_behavior_entity_instantiator
使用Packagist
"net_bazzline/php_propel_behavior_entity_instantiator": "dev-master"
在Propel中启用行为
- 将以下内容添加到您的propel.ini中
propel.behavior.create_entity_instantiator.class = lib.vendor.net_bazzline.php_propel_behavior_create_entity.source.AddToEntityInstantiatorBehavior
API
API可在bazzline.net找到
结语
如果您喜欢,请给它点星。如果您需要,请添加问题。如果您喜欢,请拉取补丁。如果您使用它,请写一篇博客。如果您喜欢它,请捐赠一些东西:-)。