[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

如何使用 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,但也可以使用其他格式

  • .ini
  • json
  • php
  • yaml
--模板路径=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 ~/文档

 

就是这样。

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
3,018
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

万代洋一

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