本系列目录

一、Phalcon在Windows上安装 《Phalcon入坑指南系列 一》

二、Phalcon入坑必须知道的功能《Phalcon入坑指南系列 二》

三、Phalcon如何切换数据库《Phalcon入坑指南系列 三》

前言

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_命名空间

使用Phalcon框架大多数都是为了其多模块功能来的,今天来聊聊Phalcon多模块如何使用。

依然是一步一个坑,使用这个框架就是痛并快乐着,一边承受坑带来的痛苦,一边享受解决坑的快乐。

一、创建一个多模块应用

使用命令先来创建出一个多模块的项目phalcon create-project kakaModules modules

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_命名空间_02多模块项目

可以看到生成的项目只有一个默认的frontend模块。

在frontend模块的index控制器中先来试试访问先,看多模块是如何访问的。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_PHP_03打印结果

跟咔咔想的结果是如出一辙,就是默认进的这个模块的index方法。

先按照常理出牌,按照正常方式看是否会正常访问

app/modules/frontend/controllers/IndexController.php这个文件里边创建一个kaka方法

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_多模块_04测试kaka方法

进行访问测试

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_多模块_05返回结果

看来Phalcon还是迎合大众的胃口的。

二、注意:当你多模块无法访问怎么办

还记得在第一期文章中将单模块创建好了之后对Nginx修改了一次配置。

这个也是官方给提供的配置,按理说如果配置好了,后边就是再创建多模块也不会影响什么。

咔咔就是走了不寻常之路,重新配置了一个虚拟域名,但没有修改Nginx配置,所以一直提示无法访问。

如果你也出现了如下界面,则看看自己是否配置了Nginx

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_报错信息_06访问报错

可以看到跟上文的访问路径是一致的,就会出现这样的情况。一定要看看是否配置了Nginx。

下图是咔咔的配置,如有需要可以直接复制拿过去使用。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_命名空间_07nginx配置

最重要的也就只有一行配置

 try_files $uri $uri/ /index.php?_url=$uri&$args;

三、如何创建属于自己的一个模块

使用命令来创建一个属于自己的模块phalcon module --name kaka --namespace=kaka --output=app/modules

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_命名空间_08创建kaka模块

创建出来的kaka模块,你可以看到在controller中是没有文件的,那么这个文件是否可以用命令来进行创建呢?

那肯定是可以的喽!phalcon controller --name index --output=app/modules/kaka/controllers

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_PHP_09创建出来的文件

文件到手天下我有,先来访问一波看是否可以。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_php_10访问结果

这可是真无情,但也无妨。根据报错信息可得知KakaModules\Modules\Frontend\Controllers\KakaController handler class cannot be loaded访问路径莫名其妙进入到了系统默认的frontend模块。

先不管这个错误是怎么发生的,先来看看创建出的文件是不是有问题,非常明显的一个问题就是没有命名空间。

先给控制器加上命名空间先。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_PHP_11添加命名空间

此时还需要十分注意的是module这个文件,此文件是非常重要的,同样也要添加对应的命名空间。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_报错信息_12添加命名空间

这一切做完之后再回来看这个问题。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_php_13报错信息

接下来的处理方式非常重要,也是当发现一个问题时应该如果应对的方式。

当看到这个问题时,一定要反应出来的第一个点就是为什么别的模块也进入到了系统的默认模块。

那么你就需要反应到是系统肯定在哪里设置一个默认访问模块。

在单模块时我们知道了在server文件中加了非常多重要的信息,接下来看看。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_多模块_14默认模块

果不其然在这个文件中找到了设置了默认的访问模块。

当把这个配置取消之后发现又出现了另一个错误。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_多模块_15报错

给出的信息就是找不到view这服务。

这个问题估计很多小伙伴就对这个错误无休无止的进行试错了,这个问题直接给大家解决方案。

试想一下,多模块肯定是要进行注册的,否则根本就无法对应的,这个操作当然也不是命令行直接生成好的,从创建控制器就可以得知,命令行生成文件还是需要进行简单处理一下才能直接使用的。

咔咔最终是在这个文件中找到了注册模块的位置,然后加上我们自己的模块即可。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_命名空间_16注册模块

此时再来进行访问,依然没有成功,还是报错。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_PHP_17报错信息

真是一步一个坎呐!此时给出的错误又是这个模型没有在容器中。

说实话这个框架的便利之处还没发现,反正就是一步一步坑。

直接在loader文件中加上下图代码即可。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_PHP_18注册类

此时再进行访问。

Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》_PHP_19万事大吉

真的是很不容易啊!经历了一步一步的摸索终于将多模块打通了。

四、创建了一个多模块后都应该做那些操作

第三节是咔咔一边分析一边修改代码,直至最后成功的结果。

为了大家可以直接看到操作流程,重新开了一个目录给大家方便查阅。

  • phalcon module --name kaka --namespace=kaka --output=app/modules 创建出一个kaka的模块
  • phalcon controller --name index --output=app/modules/kaka/controllers给kaka模块创建一个index控制器
  • 修改控制器index和module的命名空间
  • 在文件app/bootstrap_web.php添加kaka模块
  • server_web的默认模块中的默认目录可不用注释
  • 在文件app/config/loader.php中方法registerClasses进行添加模块信息。

以上就是创建一个自己的模块执行流程。

五、总结

本文主要讲解的是在Phalcon框架中使用命令行创建出自己的模块,并且可以进行访问。

这点内容也是折腾了咔咔近俩个小时,再用点时间争取把这个框架给弄明白。

坚持学习、坚持写作、坚持分享是咔咔从业以来一直所秉持的信念。希望在偌大互联网中咔咔的文章能带给你一丝丝帮助。我是咔咔,下期见。