cw/tool

该包的最新版本(v3.1.x-dev)没有可用的许可信息。

v3.1.x-dev 2017-03-28 15:48 UTC

README

  • Drupal 7: 构建状态
  • Drupal 8: 构建状态

它做什么?

CWTool 有两个主要目的。首先,它是一个覆盖 Drupal API 的结构化框架。其次,它是一个 PHP 和 Drupal 的辅助库。

为什么 Drupal 需要一个结构化框架?Drupal(尤其是第 7 版)在所有地方都使用关联数组,即使是它的更面向对象的部分也主要是松散耦合的弱对象。例如,节点是包含大量关联数组的普通 PHP 对象。与节点对象一起工作的方法是危险的且不可持续的。然而,将它们包装到控制器和模型中,可以为您提供一个定义良好的业务层和安全层。

另一个例子是表单。在旧式的 Drupal 项目中,表单在钩子和普通函数中定义和修改,几乎没有组织。表单类和表单扩展器可以帮助创建统一的类,并将冗余代码降到最低。

除了提供构建业务域的类之外,CWTool 还打算通过适配器提供 Drupal API,以增加业务层的可测试性。例如,实体 API 和变量处理是通过适配器完成的,这意味着 Drupal 实现只是单一版本,您可以在任何时候覆盖它。

CWTool 可能的另一个用途是通过服务容器为应用程序提供依赖注入。使用 DI 中的服务允许应用程序(和开发人员)切换和替换服务(如日志记录、变量处理、对象加载、缓存等),而不会带来太多麻烦。

CWTool 的实用部分是一个纯辅助函数库,通过减少冗余和易于出错的代码来加快开发速度。它提供了各种用于字符串、数组、日期、函数式风格代码等的实用工具。

CWTool 在通用 Drupal(7)应用程序中的常见用途

  • 安装模块(带有依赖项)
  • 创建一个专门的 app 模块(带有 composer + PSR4 自动加载)
  • 实现 DI 的 服务容器钩子
  • 使用 Drush 工具 生成所有节点、用户和分类控制器,并将其放入 src/Controller/<ENTITYTYPE>/<CONTROLLER>.php
  • 创建必要的模板处理器,并为每个创建 处理器类
  • 实现 变量收集钩子 并添加所有应用程序变量

对于实用工具,最好是查看文档、测试和源代码,以查看可用的内容。如果您找不到您需要的:添加它、提交它并为其编写测试。

安装

  • 将模块复制到模块文件夹
    • 更好的是将它添加为 git 子模块
    • 通过 Composer 更好:composer require cw/tool
  • 更新 Composer 依赖
    • 在模块文件夹中执行 composer update
  • 启用 cw_tool 模块
    • drush en cw_tool

主要功能

Drush 命令

实体控制器类脚手架

创建用于引导的样板 PHP 类代码。

drush cwt-sc-ctrl node blog --namespace=My\\Namespace

通用开发指南

通过其控制器使用实体

实体应该有自己的控制器,并通过控制器工厂加载。

控制器应包含最基本的行为

控制器应包含数据访问和最基本的业务逻辑。控制器不应生成主题输出。控制器不应清理其内容。

控制器应保留字段名称(作为常量)、属性或状态常量。

对于额外的行为(如控制器渲染输出、表单等),应有一个专门的类实现 ControllerAware 或 ControllerContainer。

服务优于静态类

当需要包装功能的新类时,应首选新的服务。通常它们至少包含一个日志记录器。

参数对象优于数组

避免使用数组作为参数。改为使用参数对象。

始终使用可用的结构化类

  • 对于新表单使用 FormBulider
  • 对于模板(预)处理器使用 AbstractThemeProcessor
  • 对于块使用 Block
  • 对于表单状态使用 FormStateNodeFormState

避免在钩子中使用代码

只保留到适当类的代理调用在钩子中,但不要有任何逻辑。

文档

执行 Doxygen 生成器

doxygen Doxygen

Doxygen 二进制文件是必需的。