资讯专栏INFORMATION COLUMN

Phalcon入门教程之目录结构

reclay / 2802人阅读

摘要:原文发表于入门教程之目录结构很多初学的朋友,对于以框架为基础构建的项目,应该如何组织目录结构有点摸不着头脑。只需要通过注册这些目录结构,即可正常使用。

原文发表于:Phalcon入门教程之目录结构

很多初学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 PhalconLoader();
$loader -> registerNamespaces(array(
    #注册根目录的命名空间
    "Marser" => ROOT_PATH,

    #注册共享目录的命名空间
    "MarserAppCore" => ROOT_PATH . "/app/core",
    "MarserAppHelpers" => ROOT_PATH . "/app/helpers",
    "MarserAppLibs" => ROOT_PATH . "/app/libs",
    "MarserAppService" => ROOT_PATH . "/app/service",
    "MarserAppTasks" => ROOT_PATH . "/app/tasks",

    #注册前台目录的命名空间
    "MarserAppFrontendControllers" => ROOT_PATH . "/app/frontend/controllers",
    "MarserAppFrontendModels" => ROOT_PATH . "/app/frontend/models",
    "MarserAppFrontendRepositories" => ROOT_PATH . "/app/frontend/repositories",

    #注册后台目录的命名空间
    "MarserAppBackendControllers" => ROOT_PATH . "/app/backend/controllers",
    "MarserAppBackendModels" => ROOT_PATH . "/app/backend/models",
    "MarserAppBackendRepositories" => ROOT_PATH . "/app/backend/repositories",
)) -> register();

以上代码请参考:https://github.com/KevinJay/P...

Phalcon框架还提供了另一种目录加载方式:注册文件夹,具体使用方式可以翻阅Phalcon文档。这里就只介绍命名空间的方式。

通过以上方式,我们就可以在“backend”和“frontend”两个模块中,共享“libs”、“helpers”等目录下的操作类。在具体使用的时候,只需要通过命名空间引入相应的操作类即可。比如我们在"app/backend/controllers/ArticlesController.php"控制器中需要使用“app/helpers/PaginatorHelper.php”操作类:

    use MarserAppHelpersPaginatorHelper;

在PhalconCMS多模块结构中,“backend”和“frontend”都是多带带操作各自的“models”目录。如果我们想要实现多模块共享"models"目录,那么可以将“models”目录提到“app”目录下,并修改注册命名空间中的路径。在调用时,还是通过命名空间的方式引入即可。

总结

就像文档中说的“Phalcon不会强求应用程序使用特定的文件结构”,我们可以根据业务需要,或者开发习惯,自由组织我们的项目目录结构。只需要通过"Autoloader"注册这些目录结构,即可正常使用。

最后,欢迎大家加入QQ群交流讨论:

广州PHP高端交流群:158587573

Phalcon玩家群:150237524

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22465.html

相关文章

  • Phalcon入门教程模型

    摘要:原文发表于入门教程之模型提供了四种方式操作数据库模型数据库抽象层以及原生。创建模型模型类的命名必须符合驼峰命名法,而且须继承自类文件路径继承自类。 原文发表于:Phalcon入门教程之模型 Phalcon 提供了四种方式操作Mysql数据库:模型、PHQL、数据库抽象层以及原生SQL。不论何种方式,首先都需要在DI中注册 db 服务才能正常使用: DI注册db服务 // 文件路径:...

    FreeZinG 评论0 收藏0
  • Phalcon入门教程安装

    摘要:若在云服务器上安装失败或者卡住,可参考此博文云服务器编译安装失败 Phalcon安装 # 下载安装包 wget https://github.com/phalcon/cphalcon/archive/v3.0.1.tar.gz # 重命名 mv v3.0.1.tar.gz cphalcon-3.0.1.tar.gz #解压 tar -zxvf...

    BlackMass 评论0 收藏0
  • phalcon使用经验杂谈

    摘要:初次认识是在刚学的时候最近终于有机会用上了故此说说使用上的一些感受个人是很喜欢这套框架的方式使用依赖注入让代码组织很灵活耦合也很低但是也许是框架东西太多了遇到几个坑上一年以上的也还没解决不过有一定开发经验的话还是可以自己修复的被这几个坑浪费 初次认识phalcon是在刚学php的时候,最近终于有机会用上了.故此说说使用上的一些感受 个人是很喜欢phalcon这套框架的方式,使用...

    UsherChen 评论0 收藏0
  • Phalcon 使用自定义的类

    摘要:在框架中使用自定义的类是再常见不过的事情,框架套路大多一致。这里说下中,使用自定义类的方法。 在框架中使用自定义的类是再常见不过的事情,框架套路大多一致。这里说下Phalcon中,使用自定义类的方法。 1.创建一个目录 路径可以放在app下也可以放在根目录下,譬如,放在根目录下,文件夹名叫demo 2.注册命名空间 不知道命名空间为何物的自行Google,打开app/config/l...

    frank_fun 评论0 收藏0
  • phalcon简易指南

    摘要:帮助你开始使用的简易指南。第一种方式参考第二种方式参考使用参考简单粗暴的理解是把下的对应成数据库的表,类属性对应表字段。 帮助你开始使用 phalcon 的简易指南。 简介 Phalcon 2将于2015年4月17日发布,这个版本大约85%的代码是基于 Zephir 语言重写的。Zephir是开源的,使用类似PHP语法的语言,生成C语言代码,并编译成PHP扩展。这提高了PHP扩展的开发...

    whataa 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<