Phalcon入门教程之目录结构
2017-03-07 12:47
169 查看
原文发表于:https://www.marser.cn/article/128.html
很多初学Phalcon的朋友,对于以Phalcon框架为基础构建的项目,应该如何组织目录结构有点摸不着头脑。比如多模块的项目中,如何共用”libs”类库和“models”目录中模型类的情况,就有很多刚接触Phalcon朋友经常在群里问这种问题。
我们在翻阅Phalcon文档的时候,会看到”教程2:INVO简介“中有一个项目结构的demo,其中总结到“Phalcon不会强求应用程序使用特定的文件结构”。那么,Phalcon通过什么形式来加载这些可以任意组织的目录结构呢?
下面以PhalconCMS的代码为例来进行讲解。
以上代码请参考:https://github.com/KevinJay/PhalconCMS/blob/master/app/core/loader.php
Phalcon框架还提供了另一种目录加载方式:注册文件夹,具体使用方式可以翻阅Phalcon文档。这里就只介绍命名空间的方式。
通过以上方式,我们就可以在“backend”和“frontend”两个模块中,共享“libs”、“helpers”等目录下的操作类。在具体使用的时候,只需要通过命名空间引入相应的操作类即可。比如我们在”app/backend/controllers/ArticlesController.php”控制器中需要使用“app/helpers/PaginatorHelper.php”操作类:
在PhalconCMS多模块结构中,“backend”和“frontend”都是单独操作各自的“models”目录。如果我们想要实现多模块共享”models”目录,那么可以将“models”目录提到“app”目录下,并修改注册命名空间中的路径。在调用时,还是通过命名空间的方式引入即可。
最后,欢迎大家加入QQ群交流讨论:
* 广州PHP高端交流群:158587573
* Phalcon玩家群:150237524
很多初学Phalcon的朋友,对于以Phalcon框架为基础构建的项目,应该如何组织目录结构有点摸不着头脑。比如多模块的项目中,如何共用”libs”类库和“models”目录中模型类的情况,就有很多刚接触Phalcon朋友经常在群里问这种问题。
我们在翻阅Phalcon文档的时候,会看到”教程2:INVO简介“中有一个项目结构的demo,其中总结到“Phalcon不会强求应用程序使用特定的文件结构”。那么,Phalcon通过什么形式来加载这些可以任意组织的目录结构呢?
下面以PhalconCMS的代码为例来进行讲解。
PhalconCMS目录结构
PhalconCMS/ app/ backend/ controllers/ models/ repositories/ views/ cache/ config/ core/ frontend/ controllers/ models/ repositories/ views/ helpers/ libs/ service/ tasks/ crontab/ public/
加载目录结构
PhalconCMS中是通过“注册命名空间”的方式来加载目录结构:$loader = new \Phalcon\Loader(); $loader -> registerNamespaces(array( #注册根目录的命名空间 'Marser' => ROOT_PATH, #注册共享目录的命名空间 'Marser\App\Core' => ROOT_PATH . '/app/core', 'Marser\App\Helpers' => ROOT_PATH . '/app/helpers', 'Marser\App\Libs' => ROOT_PATH . '/app/libs', 'Marser\App\Service' => ROOT_PATH . '/app/service', 'Marser\App\Tasks' => ROOT_PATH . '/app/tasks', #注册前台目录的命名空间 'Marser\App\Frontend\Controllers' => ROOT_PATH . '/app/frontend/controllers', 'Marser\App\Frontend\Models' => ROOT_PATH . '/app/frontend/models', 'Marser\App\Frontend\Repositories' => ROOT_PATH . '/app/frontend/repositories', #注册后台目录的命名空间 'Marser\App\Backend\Controllers' => ROOT_PATH . '/app/backend/controllers', 'Marser\App\Backend\Models' => ROOT_PATH . '/app/backend/models', 'Marser\App\Backend\Repositories' => ROOT_PATH . '/app/backend/repositories', )) -> register();
以上代码请参考:https://github.com/KevinJay/PhalconCMS/blob/master/app/core/loader.php
Phalcon框架还提供了另一种目录加载方式:注册文件夹,具体使用方式可以翻阅Phalcon文档。这里就只介绍命名空间的方式。
通过以上方式,我们就可以在“backend”和“frontend”两个模块中,共享“libs”、“helpers”等目录下的操作类。在具体使用的时候,只需要通过命名空间引入相应的操作类即可。比如我们在”app/backend/controllers/ArticlesController.php”控制器中需要使用“app/helpers/PaginatorHelper.php”操作类:
use \Marser\App\Helpers\PaginatorHelper;
在PhalconCMS多模块结构中,“backend”和“frontend”都是单独操作各自的“models”目录。如果我们想要实现多模块共享”models”目录,那么可以将“models”目录提到“app”目录下,并修改注册命名空间中的路径。在调用时,还是通过命名空间的方式引入即可。
总结
就像文档中说的“Phalcon不会强求应用程序使用特定的文件结构”,我们可以根据业务需要,或者开发习惯,自由组织我们的项目目录结构。只需要通过”Autoloader“注册这些目录结构,即可正常使用。最后,欢迎大家加入QQ群交流讨论:
* 广州PHP高端交流群:158587573
* Phalcon玩家群:150237524
相关文章推荐
- Yii入门教程之目录结构、入口文件及路由设置
- Yii入门教程之目录结构、入口文件及路由设置
- Yii入门教程之目录结构、入口文件及路由设置
- Yii入门教程之目录结构、入口文件及路由设置
- Yii入门教程之目录结构、入口文件及路由设置
- ruby on rails 入门系列--rails目录结构简述
- Symbian入门指南第二章:开发环境的建立以及目录结构的说明
- C#分析数据库结构,使用XSL模板自动生成代码 - 清清月儿 .NET万花筒 Asp.net技术 Asp.net教程 Asp.net源码 Asp.net基础 Asp.net控件 Asp.net入门 - CSDNBlog
- Symbian入门指南第二章:Symbian开发环境的建立以及目录结构的说明
- Beej的网络编程入门教程 第一篇 版权与目录
- ASP.NET MVC 入门2、项目的目录结构与核心的DLL
- Word入门教程:用目录项域编制目录
- ASP入门教程-多分支条件选择结构
- ASP.NET MVC 入门2、项目的目录结构与核心的DLL 【转】
- ASP.NET MVC 入门 -- 2、项目的目录结构与核心的DLL
- ASP.NET MVC 入门2、项目的目录结构与核心的DLL
- ASP.NET MVC 入门2、项目的目录结构与核心的DLL
- Div+CSS布局入门教程--写入整体层结构与CSS
- ruby on rails 入门系列--rails目录结构简述