如何使用 phalcon-devtools 加速 Phalcon 开发

你好。
我是Mandai,负责Wild 开发团队。

Phalcon 框架相当独特,因为它的核心并非以 PHP 文件的形式存在,而是由 PHP 自身加载和使用。
这种结构使其成为速度最快的框架,但作为一名熟悉开源软件的人,我一开始觉得它难以上手,因为它缺乏实质内容。

这次我们将介绍的 phalcon-devtools 为 phalcon 提供了类似于 CakePHP 中的 bake 和 FuelPHP 中的 oil 的命令。

安装 phacon-devtools

安装phalcon-devtools非常简单。
请参阅之前的博文,了解phalcon-devtools的安装说明。

本次测试的 devtools 版本为 Phalcon DevTools (3.0.4)。

 

使用 Phalcon 命令可以做什么

使用 phalcon 命令,您可以将以下字符串设置为第一个参数来执行各种操作。

  • 信息(别名:i)
  • 命令(别名:list、enumerate)
  • 控制器(别名:create-controller)
  • 模块(别名:create-module)
  • 模型(别名:create-model)
  • 所有模型(别名:create-all-models)
  • 项目(别名:create-project)
  • 脚手架(别名:create-scaffold)
  • 迁移(别名:create-migration)
  • webtools (别名:create-webtools)

让我们逐一来看!

 

猎鹰信息命令

此命令显示有关 Phalcon 运行时环境的信息。
运行后,结果如下:

环境:: 操作系统:Linux localhost.localdomain 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64 PHP 版本:7.0.15 PHP SAPI:cli PHP 二进制文件:/usr/bin/php PHP 扩展目录:/usr/lib64/php/modules PHP 二进制文件目录:/usr/bin 已加载的 PHP 配置:/etc/php.ini 版本:: Phalcon DevTools 版本:3.0.4 Phalcon 版本:3.0.3 AdminLTE 版本:2.3.6

 

猎鹰计划指挥部

创建一个新项目。
如果您要创建一个新系统,则应从此命令开始。

- 姓名 项目名称
--启用网络工具 是否启用网络工具。稍后会详细介绍网络工具。
--directory=s 在指定路径下创建由 --name 指定的目录,并解压项目(默认为 ./)。
--type=s 选择 Phalcon 应用类型

  • cli
  • 模块
  • 简单(默认)
--template-path=s 如果没有给出任何选项,则初始文件将使用 phalcon-devtools 提供的模板创建。

创建原创模板时,似乎最好使用现有的模板作为基础。

--使用配置ini 如果添加它,app/config/config.php 将变为 config.ini。
- 痕迹 不清楚
- 帮助 查看选项列表

如果选择了 --type=modules,则默认会创建一个 front + cli 模块配置。

如果在 phalcon 项目之外运行 phalcon 项目之外的命令(更准确地说,是在使用 --directory 重写的路径中),则会发生以下错误。

错误:此命令应在 Phalcon 项目目录中调用。.

为了帮助确定这一点,使用“phalcon project”命令创建的项目包含一个名为“.phalcon”的目录。

 

帕尔康模块命令

此命令没有基本目录路径或其他设置(例如 phalcon 项目),因此必须在 phalcon 项目目录中运行。

- 姓名 要添加的新模块名称
--namespace=s 在 Module.php 文件中添加命名空间
--output=s 指定模块目录的路径。虽然这是一个可选步骤,但如果不指定,将会发生错误,因此它至关重要。

phalcon module --name module1 --output=./app/modules

--config-type=s 这是配置文件的文件类型。默认是php格式,但您也可以选择其他格式。

  • 初始
  • JSON
  • php
  • yaml
--template-path=s 创建模块时,请指定包含模板文件的目录路径。基本模板位于 devtools 模块目录中。
- 帮助 查看选项列表

 

猎鹰控制器命令

即使直接在项目目录下运行此命令,也会出现错误提示“错误:此命令应在 Phalcon 项目目录中调用。”,因此 --output 选项似乎是必不可少的。

--name=s 指定控制器名称。如果您创建项目时使用了 type=simple(或未指定类型),则只需使用此选项即可创建控制器。
--namespace=s 指定控制器的命名空间。
--directory=s 请输入包含控制器的项目路径。如果忘记添加末尾的斜杠,可能无法正常工作。
--output=s 指定控制器所在的目录路径。模块配置需要此项。
--base-class=s 设置继承类。由于未使用 use 运算符,因此必须包含命名空间。
- 力量 如果指定的控制器已存在,则会覆盖并重新创建它。
- 帮助 查看选项列表

 

猎鹰模型指挥部

此命令包含与各种模型相关的功能。
执行此命令之前,您必须在 config/config.php 文件中完成数据库访问设置。

如果您为包含带连字符的字段的表创建模型,则创建过程会成功,但您会收到错误,因为 PHP 规则规定类属性名称中不能使用连字符。

PHP 解析错误:语法错误,意外出现“-”,应为“,”或“;”,位于 /path/to/project/app/models/users.php 第 34 行

设计数据库时要谨慎。

--name=s 指定要为其创建模型的表名。
--schema=s 指定用于检索模型创建所需表信息的模式。当从 config.php 文件中未指定的模式检索数据时,此步骤是必要的。
--namespace=s 设置要创建的模型的命名空间。
--get-set 通常情况下,表中的列是作为类的公共属性创建的,但我们将把它们设为受保护属性,并提供 getter/setter 方法。
--extends=s 通过继承此处指定的类来创建模型类。
--excludefields=l 您可以指定以逗号分隔的字段,这些字段您不想创建属性。
--doc 使用 PHPDoc 风格的注释创建
--directory=s 输入要创建的模型的路径。此选项不适用于模块(因为它们之间存在模块目录)。
--output=s 指定输出目录。模块配置必需。
- 力量 这是覆盖现有模型的选项。
--camelize 如果列名采用蛇形命名法,则将属性名创建为驼峰命名法。默认情况下保持不变。
- 痕迹 显示框架在发生异常时的跟踪信息 [可选]
--mapcolumn 在代码中添加 columnMap 方法,以获取表中的字段名称列表。
- 抽象的 创建一个抽象类来模拟目标表。继承自该类的类不会自动生成,因此您需要使用“phalcon model”命令单独创建它们。
- 注释 添加注释似乎是一个选项,但默认情况下是开启的,所以我进行差异比较时没有任何变化。
- 帮助 查看选项列表

 

phalcon 所有型号命令

如果您已经为应用程序设计好了数据库,并且数据库中已经创建了表,则可以运行不带任何参数的“phalcon all-models”命令,快速为所有现有表创建模型。这
与“phalcon model”命令本质上是相同的。

完成此操作后,最好使用带有 --force 选项的“phalcon model”命令重新创建任何需要单独配置的模型。

--config=s 配置文件(可选)
--models=s 模型目录(可选)
--schema=s 切换模型创建的模式。默认情况下,它按照 config.php 中的描述工作,但此设置会覆盖目标位置。

即使您在此处指定了它,但如果 config.php 中未设置架构,则会发生错误“ERROR: SQLSTATE[3D000]: 无效的目录名称: 1046 未选择数据库”。

--namespace=s 为创建的模型设置命名空间。
--extends=s 设置继承类。由于未使用 use 运算符,因此必须包含命名空间。
- 力量 即使文件已存在,也会将其覆盖。
--get-set 通常情况下,表中的列是作为类的公共属性创建的,但我们将把它们设为受保护属性,并提供 getter/setter 方法。
--doc 使用 PHPDoc 风格的注释创建
--关系 如果目标表存在外键约束,则会添加关系设置。
--fk 如果目标表存在外键约束,则会添加关系设置。
--验证 根据惯例定义可能的领域验证。
--directory=s 设置项目根目录的路径。此设置仅当项目类型为简单项目时有效。
--mapcolumn 在代码中添加 columnMap 方法,以获取表中的字段名称列表。
- 抽象的 将模型创建为抽象类。这将为所有表创建一个抽象类,根据您的设计理念,这可能是一个有用的选择。
- 帮助 查看选项列表

 

猎鹰迁徙指挥部

这是一个可以处理数据库迁移的命令。

即使由于版本降级导致列数减少,表也不会重新创建,而是使用 ALTER TABLE 删除列,因此表不太可能变为空。

如果运行“phalcon migration generate”命令时不带任何参数,它将使用基于版本号的版本控制。
如果使用“--descr”选项运行“generate”命令,它将切换到基于时间戳的版本控制。

令人困惑的是,你可以将这两种类型的迁移混合使用。

经过尝试各种方法后,似乎最好使用版本号管理执行常规迁移,而当需要为特定时间创建特殊迁移文件时,可以使用 --descr 选项执行迁移。

例如,创建版本为 1.0.0 的迁移 A,然后创建内容相同但添加了 `--descr` 选项的迁移 B。
即使在迁移 A 已应用的情况下运行迁移 B,也会收到“信息:版本 1.0.0 已应用”的消息,这表明迁移 A 和迁移 B 在内部被确认为同一个迁移。

--action=s 使用 generate 创建迁移,使用 run 执行迁移,使用 list 显示所有迁移的列表。

如果您不指定版本,则会运行所有迁移。您也可以使用 `phalcon migration [generate | run]` 命令运行迁移。

--config=s 指定 config.php 的路径
--migrations=s 指定迁移目录的路径。仅当 project=modules 时才需要此步骤。
--directory=s 设置项目根目录路径。
--table=s 设置要迁移的表名
--version=s 请指定要更改的迁移版本。
--descr=s 为迁移文件添加迁移描述。此选项仅在使用 generate 命令时有效,且仅启用此选项后,迁移文件才会基于时间戳。
--data=s 导出数据并将其保存到 dat 文件(内容似乎是 CSV 格式)。选择“始终”或“创建时”,系统将创建一个迁移文件,以便在上传时插入该文件。
- 力量 仅当使用 `--version` 选项指定版本时,此选项才有效。如果未指定版本,则会分配最高版本号。
--基于ts 支持基于时间戳的版本化迁移。此选项仅在 `--action` 选项为 `run` 或 `list` 时有效,使用 `generate` 时将被忽略。
--log-in-db 通常情况下,当前迁移版本写入“./.phalcon/migration-version”,但通过添加此选项,您可以将其更改为管理数据库中的版本。
--no-auto-increment 不要保存当前增量值。
- 帮助 查看选项列表

 

猎鹰支架命令

运行此命令将一次性创建模型/视图/控制器。

我们还会创建包含搜索、新建和更新功能的页面。
每个功能在控制器中都有各自的实现,因此,如果您创建的页面仅执行简单的 CRUD 操作,那么通过修改脚手架中创建的内容来实现会快得多。

--table-name=指定要为其创建脚手架的表
--schema=s 指定要创建的表所在的模式。
--get-set 通常情况下,在模型中,表中的列被创建为类的公共属性,但我们将把它们设为受保护属性,并提供 getter/setter。
--directory=s 设置项目根目录
--template-path=s 如果要指定一个单独的模板文件作为脚手架的基础,请使用此选项设置路径。
--template-engine=s 指定要使用的模板引擎。默认值为 PHP,但您也可以选择 Volt。
- 力量 由脚手架生成的一组文件。如果文件已存在,则会被覆盖并重新创建。
- 痕迹 显示框架在发生异常时的跟踪信息 [可选]
--ns-models=s 可选择指定模型的命名空间
--ns-controllers=s 此选项指定控制器的命名空间。
- 帮助 查看选项列表

 

Phalcon WebTools 命令

该模块基于 Twitter Bootstrap 框架构建,方便您在浏览器中使用 Phalcon 命令。
它之后可以禁用,因此您可以在开发阶段启用它,并在发布时禁用它。

Phalcon 命令有很多功能,因此能够使用 GUI 轻松配置它们非常棒。

--action=s 有两个参数:[enable|disable],允许您使用 GUI 从浏览器执行各种 Phalcon 命令。
- 帮助 查看选项列表

 

包含物品

phalcon-devtools 目录下直接有一个名为 ide 的目录,其中
包含一些工具,使在 IDE 中实现 Phalcon 变得更加容易。

 

这是一个用于创建存根的脚本。
请将程序开头的 CPHALCON_DIR 常量替换为 Phalcon.so 的安装路径。

// 示例 define('CPHALCON_DIR' , '/usr/lib64/php/modules/');

重写后,运行该程序时,它会创建一个以 Phalcon 版本命名的目录,并为当前的 Phalcon 环境生成存根。
不过,最新版本的存根已经包含在内,因此几乎无需手动运行。

 

它包含一个命令行工具,用于从 phpstorm 控制台运行 phalcon 命令。
该工具名为 phalcon.sh,不会检查安装情况,但注册它可能很有用。

 

此文件包含 Phalcon 最新版本中已实现功能的存根。
如果您使用的是最新版本,则使用此文件比运行 gen-stubs.php 更方便。

 

模板修改

我们现在知道 Phalcon 命令可以自动生成项目、模型和控制器,但如果您创建多个项目,很可能会发现自己每次都要进行相同的更改。Phalcon
命令使用模板来完成各种自动生成任务,因此,如果您重写这些模板,就能摆脱这些繁琐的工作!
模板用于项目、模块和脚手架,其中用“@@”括起来的部分会被替换,因此最好不断修改基础部分,使其更易于使用。

安装 phalcon-devtools 后,您可以使用以下命令将模板复制到 ~/Documents 目录:

lang=bash cp -a $PTOOLSPATH/templates ~/Documents

 

就是这样。

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
3,348
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。