tccltd/tcc-abstract-module

该软件包的最新版本(1.0.0)没有提供许可证信息。

TccAbstractModule 软件包

1.0.0 2014-03-12 17:08 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:46:20 UTC


README

提供了一个可以由个体模块类扩展的 AbstractModule 类,以便自动实现功能,如自动加载和配置。

安装

只需将 tccltd/tcc-abstract-module 添加到您的 composer.json 文件中。

使用方法

在创建新的模块时,在您的 Module.php 中扩展 TccAbstractModule\Module\AbstractModule

PHP 5.3 注意:如果您不使用 PHP 5.4,则需要扩展 TccAbstractModuleNoTraits 而不是 TccAbstractModule。提供的功能是相同的。

对于更简单的模块,您可能会发现这已经足够了。

namespace MyModule;

use TccAbstractModule\Module\AbstractModule;

class Module extends AbstractModule
{
}

抽象模块将自动配置以下行为:

  1. 自动加载:首先使用在 ./autoload_classmap.php 中定义的类映射,如果失败,则回退到标准 PSR-0 兼容的自动加载器,该自动加载器从 ./src/MyModule/ 中的文件提供服务。

  2. 模块配置:加载所有在 ./config/ 中符合格式 module.config{,.*}.php 的文件。作为良好的实践,您应该将路由分离到 module.config.routes.php

  3. 服务配置:在您的 Module.php 的 getServiceConfig() 函数中定义服务管理可调用、服务、工厂、别名、初始化器和抽象工厂,这些现在应在 ./config/service/service.config.php 中定义。格式相同。请注意,所有在 ./config/service/ 中符合格式 service.config{,.*}.php 的文件都将被加载,如果您希望进一步细分服务配置。

  4. 控制器配置:在您的 Module.php 的 getControllerConfig() 函数中定义控制器管理可调用、服务、工厂、别名、初始化器和抽象工厂,这些现在应在 ./config/service/controller.config.php 中定义。格式相同。请注意,所有在 ./config/service/ 中符合格式 controller.config{,.*}.php 的文件都将被加载,如果您希望进一步细分控制器配置。

  5. 视图助手配置:在您的 Module.php 的 getViewHelperConfig() 函数中定义视图助手管理可调用、服务、工厂、别名、初始化器和抽象工厂,这些现在应在 ./config/service/viewhelper.config.php 中定义。格式相同。请注意,所有在 ./config/service/ 中符合格式 service.config{,.*}.php 的文件都将被加载,如果您希望进一步细分视图助手配置。

一个典型的文件结构(关注与此模块相关的方面)可能如下所示:

module/  
  MyModule/  
    config/  
      service/  
        controller.config.php  
        service.config.php  
        viewhelper.config.php  
      module.config.php  
      module.config.routes.php  
  autoload_classmap.php  
  Module.php  

覆盖

如果您想修改 AbstractModule 的行为,您可以通过覆盖您自己的 Module.php 文件或扩展整个模块并创建自己的 AbstractModule 来实现。如果您有可能会对所有此模块的用户有益的建议,请随时提出,当然可以!

特性

TccAbstractModule 由特性组成。这意味着您可以选择使用您想要使用的功能。在这种情况下,您不会覆盖 AbstractModule。相反,您会在自己的模块类中使用相关的特性。请注意,您需要使用 ClassDirTrait 才能使用其他特性,并使用 ClassNamespaceTrait 才能使用 AutoloaderProviderDefaultTrait

预计大多数用户不需要挑选。