如何使用 phalcon-devtools 加速 Phalcon 开发
目录
你好。
我是Mandai,负责Wild 开发团队。
phalcon 是一个非常罕见的框架,其中 phalcon.so 加载到 PHP 本身中,并且该框架的核心部分并不作为 PHP 文件存在。
这种格式是框架最快的原因,但作为一个熟悉开源的人,我发现一开始很难习惯,因为它缺乏实质内容。
这里介绍的 phalcon-devtools 为 phalcon 提供了 CakePHP 中的“bake”和 FuelPHP 中的“oil”等命令。
安装 phacon-devtools
安装 phalcon-devtools 非常简单。
请查看之前的博客,了解如何安装 phalcon-devtools 的摘要。
本次测试的devtools版本是Phalcon DevTools(3.0.4)。
使用 phalcon 命令可以做什么
使用 phalcon 命令,您可以通过将以下字符串设置为第一个参数来执行各种操作。
- 信息(别名:i)
- 命令(别名:列表、枚举)
- 控制器(别名:create-controller)
- 模块(别名:create-module)
- 模型(别名:create-model)
- 所有模型(别名:create-all-models)
- 项目(别名:create-project)
- 脚手架(别名:create-scaffold)
- 迁移(别名:create-migration)
- webtools (别名:create-webtools)
让我们一一来看看吧!
phalcon 信息命令
该命令显示 halcon 执行环境信息。
当我执行的时候,结果如下。
环境:: 操作系统: 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 Bin: /usr/ bin/php PHP 扩展目录:/usr/lib64/php/modules PHP Bin 目录:/usr/bin 加载的 PHP 配置:/etc/php.ini 版本:: Phalcon DevTools 版本:3.0.4 Phalcon 版本:3.0.3 AdminLTE版本:2.3.6
Phalcon 项目命令
创建一个新项目。
创建新系统时,从该命令开始。
- 姓名 | 项目名称 |
---|---|
--启用网络工具 | 是否使 webtool 可用。稍后将详细介绍网络工具。 |
--目录=s | 在指定路径下创建--name指定的目录并展开项目(默认./) |
--类型=s | 选择 halcon 应用类型
|
--模板路径=s | 如果没有选项,请使用 phalcon-devtools 附带的模板来构建初始文件。
创建原始模板时,建议使用附带的模板作为基础。 |
--使用配置-ini | 添加后,app/config/config.php 变为 config.ini |
- 痕迹 | 不清楚 |
- 帮助 | 显示选项列表 |
如果--type=modules,则默认使用 front + cli 模块配置组合创建。
如果在 phalcon 项目之外(更准确地说是用 --directory 重写后的路径)运行 phalcon 项目以外的命令,会出现以下错误。
错误:应在 Phalcon 项目目录内调用此命令。
为了用于此确定,使用“phalcon project”命令创建的项目包含一个名为“.phalcon”的目录。
Phalcon 模块命令
与 phalcon 项目不同,该命令没有任何设置,例如基本目录路径,因此必须在 phalcon 项目目录中执行。
- 姓名 | 新添加的模块名称 |
---|---|
--命名空间=s | 为 Module.php 添加命名空间 |
--输出=s | 指定模块目录的路径。它被视为一个选项,但如果不指定它,就会发生错误,所以我认为它可以被认为是强制性的。
phalcon 模块 --name module1 --output=./app/modules |
--配置类型=s | 这是配置文件的文件类型设置。默认为 php,但也可以使用其他格式
|
--模板路径=s | 创建模块时指定包含模板文件的目录路径。基本模板位于devtools模块目录中 |
- 帮助 | 显示选项列表 |
Phalcon 控制器命令
即使我直接在项目目录下运行此命令,也会出现错误“错误:应在 Phalcon 项目目录内调用此命令。”,所以我觉得需要 --output 选项。
--名称=s | 指定控制器名称。如果您使用 type=simple (或未指定)创建项目,则可以仅使用此选项创建控制器。 |
---|---|
--命名空间=s | 指定控制器命名空间 |
--目录=s | 输入包含控制器的项目的路径。如果你忘记了最后一个斜杠,它似乎无法正常工作。 |
--输出=s | 指定将放置控制器的目录路径。模块配置所需 |
--基类=s | 设置继承源类。由于未使用 use 运算符,因此命名空间也必须包含在描述中。 |
- 力量 | 覆盖并创建指定的控制器,即使它已经存在 |
- 帮助 | 显示选项列表 |
Phalcon 模型命令
这些命令包含与各种模型相关的功能。
在运行该命令之前,您需要在config/config.php中完成数据库访问设置。
如果您创建的表模型中包含带有连字符的字段,则可以创建它,但作为 PHP 端的规则,将会出现错误,指出您不能在类属性的名称中使用连字符。
PHP 解析错误:语法错误,第 34 行 /path/to/project/app/models/users.php 中出现意外的“-”、期望“,”或“;”
设计数据库时请小心。
--名称=s | 指定表名创建模型 |
---|---|
--架构=s | 指定schema,获取模型创建所需的表信息。从 config.php 中写入的模式以外的模式检索时需要 |
--命名空间=s | 设置要创建的模型的命名空间 |
--获取设置 | 表中的列通常创建为类的公共属性,但使其成为受保护的属性并提供 getter/setter。 |
--扩展=s | 通过继承此处指定的类来创建模型类 |
--排除字段=l | 您可以指定不想为其创建属性的逗号分隔字段。 |
--doc | 使用 PHPDoc 格式的注释创建 |
--目录=s | 输入您要创建的模型的路径。此选项在模块配置中效果不佳(当然,因为中间有一个模块目录) |
--输出=s | 指定输出目标目录。模块配置所需 |
- 力量 | 这是通过覆盖现有模型来创建时添加的选项。 |
--骆驼化 | 如果列名是蛇形命名法,则使用驼峰表示法创建属性。默认保持原样 |
- 痕迹 | 显示异常情况下框架的踪迹[可选] |
--映射列 | 添加一个columnMap方法,允许您在代码中获取表中的字段名称列表。 |
- 抽象的 | 创建一个抽象类来对目标表建模。不会生成继承此的类,因此需要使用“phalcon model”命令单独创建它。 |
- 注释 | 这似乎是一个添加注释的选项,但由于它是默认附加的,所以即使我进行了比较也没有任何变化。 |
- 帮助 | 显示选项列表 |
phalcon 所有型号命令
如果您要创建的应用程序的数据库设计已完成,并且表已在数据库上构建,则可以通过运行不带任何参数的“phalcon all-models”命令来快速为所有现有表创建模型。
它与“phalcon model”命令基本相同。
完成此操作后,最好使用添加了 --force 选项的“phalcon model”命令重新创建需要单独设置的模型。
--config=s | 配置文件[可选] |
---|---|
--模型=s | 模型目录[可选] |
--架构=s | 切换模型创建的架构。默认情况下,它按照 config.php 中的描述工作,但会覆盖方向。
即使这里指定了,如果config.php中没有设置schema,也会出现错误“ERROR: SQLSTATE[3D000]: Invalid Catalog name: 1046 No database selected”。 |
--命名空间=s | 为您创建的模型设置命名空间 |
--扩展=s | 设置继承源类。由于未使用 use 运算符,因此命名空间也必须包含在描述中。 |
- 力量 | 即使同名文件已存在也会覆盖 |
--获取设置 | 表中的列通常创建为类的公共属性,但使其成为受保护的属性并提供 getter/setter。 |
--doc | 使用 PHPDoc 格式的注释创建 |
--关系 | 如果目标表有外键约束,则会添加关系设置。 |
--fk | 如果目标表有外键约束,则会添加关系设置。 |
--验证 | 根据约定定义可能的域验证 |
--目录=s | 设置项目根路径。仅当项目类型为简单时此设置才有效 |
--映射列 | 添加一个columnMap方法,允许您在代码中获取表中的字段名称列表。 |
- 抽象的 | 将模型创建为抽象类。它为所有表创建一个抽象类,因此根据您的设计理念,它可能是一个有用的选项。 |
- 帮助 | 显示选项列表 |
phalcon 迁移命令
这是可以执行与DB迁移相关的处理的命令。
即使由于版本降级等原因导致列数减少,由于使用 ALTER TABLE 删除列而不是重新创建表,因此表不太可能变空。
如果您在不带任何参数的情况下运行“phalcon migrationgenerate”,则将使用版本号执行版本控制。
如果您在生成中使用 --descr 选项,它将切换到基于时间戳的版本控制。
令人困惑的是这两种类型的迁移可以混合使用。
在尝试了各种方法之后,似乎最好使用版本号管理进行正常迁移,并在您想要为特定时间创建特殊迁移文件时使用 --descr 选项运行迁移。
例如,创建使用版本 1.0.0 创建的迁移 A,并使用相同内容但使用 --descr 选项创建迁移 B。
即使在应用迁移 A 的情况下执行迁移 B,也会显示消息“信息:版本 1.0.0 已应用”,表明迁移 A 和迁移 B 内部相同,看起来已经得到确认。
--动作=s | 使用generate创建,使用run执行,并使用list显示所有迁移的列表。
如果未指定版本,则将执行所有迁移。也可以使用 phalcon 迁移 [generate | run] 来执行 |
---|---|
--config=s | 指定config.php的路径 |
--迁移=s | 指定迁移目录的路径。似乎只有当project=modules时才需要 |
--目录=s | 设置项目根目录的路径。 |
--表=s | 设置需要迁移的表名。 |
--版本=s | 指定要更改的迁移版本 |
--descr=s | 向迁移添加迁移描述。该选项仅在生成时有效,并且只有指定该选项时,迁移文件才会基于时间戳。 |
--数据=s | 导出数据并将其保存在 dat 文件中(内容为 CSV 模式)。选择always或oncreate,将创建一个迁移文件并在上传时插入。 |
- 力量 | 即使迁移文件存在,它也会被覆盖并创建。仅当使用 --version 选项指定版本时,此选项才有效;如果未指定,则将分配最高版本号。 |
--基于ts | 使用基于时间戳的版本化迁移。该选项仅在运行、列出时有效,生成时忽略。 |
--登录数据库 | 通常,当前的迁移版本写在“./.phalcon/migration-version”中,但是通过添加此选项,您可以将其更改为数据库内的版本控制。 |
--无自动增量 | 防止保存增量的当前值 |
- 帮助 | 显示选项列表 |
Phalcon 脚手架命令
执行此命令将批量创建模型/视图/控制器。
我们还将创建具有搜索、新建和更新功能的屏幕。
每个函数本身都是在控制器上实现的,因此如果您要创建一个仅执行简单 CRUD 的页面,则通过修改使用scaffold 创建的页面来实现它会快得多。
--table-name=指定创建sscaffold的表 | |
---|---|
--架构=s | 设置要创建的表所在的schema |
--获取设置 | 通常,表中的列被创建为模型中类的公共属性,但使其成为受保护的属性并提供 getter/setter。 |
--目录=s | 设置项目根目录 |
--模板路径=s | 如果您想指定一个单独的模板文件作为脚手架的基础,请使用此选项设置路径。 |
--模板引擎=s | 指定要使用的模板引擎。默认为 PHP,其他选项为 volt |
- 力量 | 使用 scaffol 创建的一组文件,可覆盖并重新创建任何已存在的文件。 |
- 痕迹 | 显示异常情况下框架的踪迹[可选] |
--ns-模型=s | 指定模型命名空间的选项 |
--ns-控制器=s | 该选项指定控制器的命名空间。 |
- 帮助 | 显示选项列表 |
phalcon webtools 命令
将一个模块合并到您的项目中,使您可以轻松地在浏览器上使用 Phalcon 命令,并使用 Twiiter Bootstrap 进行布局。
您可以稍后将其设置为不可用,这样您就可以在开发期间使其可用并在发布时将其禁用。
Phalcon 命令有很多功能,因此能够使用 GUI 轻松配置它们真是太好了。
--动作=s | 有两种类型的参数:[enable|disable],使您能够使用 GUI 从浏览器执行各种 Phalcon 命令。 |
---|---|
- 帮助 | 显示选项列表 |
包含项目
phalcon-devtools 目录下有一个名为 ide 的目录。
它主要包含可以更轻松地在 IDE 中实现 Phalcon 的工具。
这是用于创建存根的脚本。
将程序开头出现的CPHALCON_DIR常量重写为Phalcon.so的安装路径。
// 示例定义('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 ~/文档
就是这样。