如何使用 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 应用类型
|
| --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格式,但您也可以选择其他格式。
|
| --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