net_bazzline/php_propel_behavior_entity_instantiator

该包已被弃用,不再维护。没有建议的替代包。

这个自由免费的特性,简化了propel的实体实例化

3.0.0 2020-07-15 12:44 UTC

This package is auto-updated.

Last update: 2021-06-28 13:18:08 UTC


README

我仍然喜欢这个想法,但目前没有开发它的用例。

Propel 实体实例化生成器行为

这个自由免费的特性,简化了你的 propel 查询和对象类的实体实例化。

感谢 ExtraPropertiesBehavior 作为这样一个优秀的模板。

当前主分支的构建状态由 Travis CI 跟踪:Build Status Latest stable

Scrutinizer 状态:code quality | build status

Versioneye 状态:dependencies

下载: Downloads this Month

可在 openhub.net 获取。

如果您想更详细地控制事物,请查看 php 定位器生成组件 及其 propel 示例

当前的变更日志可在 此处 找到。

原因

  • 代码中不再有 new
  • 代码中不再有静态的 Query::create 调用
  • 简化了编写测试代码(createMyEntitycreateMyEntityQuery 可进行模拟)

用法

  • 如果您想运行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找到

结语

如果您喜欢,请给它点星。如果您需要,请添加问题。如果您喜欢,请拉取补丁。如果您使用它,请写一篇博客。如果您喜欢它,请捐赠一些东西:-)。