Phalcon入門教程之目錄結構

原文發表於: Phalcon入門教程之目錄結構

不少初學Phalcon的朋友,對於以Phalcon框架爲基礎構建的項目,應該如何組織目錄結構有點摸不着頭腦。好比多模塊的項目中,如何共用"libs"類庫和「models」目錄中模型類的狀況,就有不少剛接觸Phalcon朋友常常在羣裏問這種問題。php

咱們在翻閱Phalcon文檔的時候,會看到"教程2:INVO簡介"中有一個項目結構的demo,其中總結到「Phalcon不會強求應用程序使用特定的文件結構」。那麼,Phalcon經過什麼形式來加載這些能夠任意組織的目錄結構呢?html

下面以PhalconCMS的代碼爲例來進行講解。git

PhalconCMS目錄結構

PhalconCMS/
      app/
          backend/
              controllers/
              models/
              repositories/
              views/
          cache/
          config/
          core/
          frontend/
               controllers/
               models/
               repositories/
               views/
          helpers/
          libs/
          service/
          tasks/
      crontab/
      public/

加載目錄結構

PhalconCMS中是經過「註冊命名空間」的方式來加載目錄結構:github

$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/P... shell

Phalcon框架還提供了另外一種目錄加載方式:註冊文件夾,具體使用方式能夠翻閱Phalcon文檔。這裏就只介紹命名空間的方式。app

經過以上方式,咱們就能夠在「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」目錄下,並修改註冊命名空間中的路徑。在調用時,仍是經過命名空間的方式引入便可。frontend

總結

就像文檔中說的「Phalcon不會強求應用程序使用特定的文件結構」,咱們能夠根據業務須要,或者開發習慣,自由組織咱們的項目目錄結構。只須要經過"Autoloader"註冊這些目錄結構,便可正常使用。spa

最後,歡迎你們加入QQ羣交流討論:code

  • 廣州PHP高端交流羣:158587573
  • Phalcon玩家羣:150237524
相關文章
相關標籤/搜索