mfn/cakephp2-magic-properties

此包已被废弃,不再维护。未建议替代包。

自动为 CakePHP2 魔法属性添加类文档

v0.1.4 2015-02-01 19:24 UTC

This package is auto-updated.

Last update: 2020-11-06 16:17:31 UTC


README

此仓库已存档,已履行其职责。

自动为 CakePHP2 魔法属性添加类文档 Travis Build Status

主页: https://github.com/mfn/cakephp2-magic-properties

简介

当使用 CakePHP2 时,依赖注入通过如 useshelpers 等魔法属性来实现。

不幸的是,并非许多编辑器/IDE 能够理解这种特殊语法,因此几乎没有提供自动补全的魔法属性。

通过在您的 CakePHP2 源代码上运行此脚本,PHPDOC @property 将添加到类定义中,这有助于自动补全属性类型。

只需将任何文件/目录传递给脚本,它们将被解析,并添加 PHPDOC 属性。注意,每个类都将通过其父类来解析,以确定它是否是控制器或助手,因此脚本必须能够找到所有相关的父类以正确解析它们。通常,只需传递您的 Controller/ 和/或 Helper/ 目录即可。

此代码使用了 Nikita Popov 的出色库 PhpParser

支持哪些注入属性?

  • 控制器
    • components
    • uses
  • Component
    • components
  • 助手
    • components
    • helpers
    • uses
  • 模型
    • belingsTo
    • hasAndBelongsToMany
    • hasOne
    • hasMany
  • Shell
    • uses

也支持 className 设置。

有关详细信息,请参阅 res/configuration.php

使用方法

cakephp2_magic_properties magic app/Controller/

cakephp2_magic_properties magic app/View/Helper/

或您的整个应用(注意,它将递归解析所有 *.php 文件)

cakephp2_magic_properties magic ../path/to/your/app/

它将转换

AppController extends Controller {
  $uses = ['Foo'];
  $component = ['Bar'];
}

/**
 * @property BarComponent $Bar
 * @property Foo $Foo
 */
AppController extends Controller {
  $uses = ['Foo'];
  $component = ['Bar'];
}

默认情况下,现有属性不会被修改,但会注意不创建重复的。如果您想删除所有现有的 @property 文档,请使用 --remove 标志 cakephp2_magic_properties magic --remove ../path/to/your/app/

/**
 * @property BarComponent $Bar
 * @property Foo $Foo
 */
AppController extends Controller {
  $component = ['Bar'];
}

/**
 * @property BarComponent $Bar
 */
AppController extends Controller {
  $component = ['Bar'];
}

注意:它还可能导致您的现有属性重新排序,如果没有任何实际更改(因为内部首先总是删除所有属性)。

有关其他选项,请参阅 --help 标志。库被设计为幂等的。

与 phing 集成

提供了一个Phing任务,以更好地集成Phing。使用taskdef定义一个新自定义任务。

  <taskdef name="cakephp2-magic-properties" classname="Mfn\CakePHP2\MagicProperty\Runner\PhingTask"/>

  <target name="generate">
    <cakephp2-magic-properties>
      <fileset dir="/path/to/your/cake/app/">
        <include name="**/*.php"/>
        <exclude name="Config/**"/>
        <exclude name="Plugin/**"/>
        <exclude name="Vendor/**"/>
      </fileset>
    </cakephp2-magic-properties>
  </target>

以下属性受支持

  • configFile
    配置文件的路径,见下一章
  • dryRun
    是否实际将更改写入文件;默认为false,表示覆盖文件。这在与haltOnSourcesChanged结合时很有用
  • haltOnSourcesChanged
    是否在有任何源文件更改时中止构建。
  • removeUnknownProperties
    是否删除未知的@property声明

注意:由于使用了命名空间,此功能只有在通过Composer使用Phing时才能正常工作。

配置文件

res/configuration.php中提供了项目的默认配置,所有运行者都可以覆盖。

此文件包含映射

  1. 从“顶级类”到属性
  2. 这些属性映射到一个闭包,该闭包将注入的虚拟属性名称转换为实际类名称

需要使用闭包方法,因为例如helperscomponents有不同的规则来调用实际的类名称。

要求

  • PHP 5.4(已测试至少5.4.24)

安装

composer.phar require mfn/cakephp2-magic-properties 0.1.1

待办事项/想法

  • 测试支持?

© Markus Fischer markus@fischer.name