【Phalcon】ルーティング分割


前に書く
昨年PHPのFlightフレームワークを使ってapiを作成したことがありますが、Flightフレームワークは非常に簡単で、公式ドキュメントを見るのに少し時間がかかるだけで手書きコードを書くことができ、Restfulスタイルをサポートしています.最初は何も感じませんでしたが、需要があればルートを追加します.プロジェクトは大きくないので、全部で10個を超えません.
最近Phalconを使って、プロジェクトの規模は中等で、ルート(routes.php)のところで本論文で注目している痛みに出会って、数十のルートは1つのファイルの中に置いて、しかも引き続き中に入れて、一定の数量級に達して、もしある日、私がその中の1つのルート(名前を忘れたかはっきり覚えていない)を変更したいならば、マウスをスクロールして半日かけてやっと見つける必要があります.コードが混乱し、すべてのcontroller/actionがここで管理されています.
次のように
/**
 *   
 */
$router->add(
    "/",
    [
        "controller" => "index",
        "action"     => "index",
    ]
);

/**
 *     
 */
$router->add(
    "/user/info",
    [
        "controller" => "user",
        "action"     => "info",
    ]
);

/**
 *         
 */
$router->add(
    "/shopcart/add",
    [
        "controller" => "shopcart",
        "action"     => "add",
    ]
);

...

本文
痛みがある以上、解決策を考えなさい.
Phalconの通常のプロジェクト構造は大体こうです
app/                                   #    
     cache/                            #    
          data/                             #    
          metaData/                         #     
          models/                           #    
          views/                            #    
          volt/                             #  volt    
     config/                           #    
          config.example.php                #    (      ,      )
          development.example.php           #      (  debug   )
          env.php                           #    (     ,      ,        )      
          nginx.example.conf                #nginx  
          routes.php                        #      
          timezones.php                     #      
     controllers/                           #   
     library/                               #    (   ,    )
          Badges/                           #
          Github/                           #
          Http/                             #
          Mail/                             #
          Markdown/                         #
          Mvc/                              #
          Notifications/                    #
          Paginator/                        #
          Queue/                            #
          Search/                           #
          Utils/                            #
          Bootstrap.php                     #    
     logs/                                  #    
     models/                                #   
     views/                                 #  (volt  )
docs/                                  #       
opsfiles/                              #        
public/                                #    
     css/                              #    
     fonts/                            #    
     icon/                             #    
     js/                               #javascript  
     .htaccess                         #      (       index.php)
     505.html                          #         
     index.php                         #    (          )
schemas/                               #sql  
scripts/                               #     
test/                                  #    
.env.example                           #        
.htaccess                              #      (  public    index.php)
.htrouter.php                          # .htaccess      ,  public    index.php
composer.json                          #      

ロードプロセス:

1./public/index.php
use app\library\Bootstrap;
         ,     

include_once realpath(dirname(dirname(__FILE__))) . '/app/config/env.php';
include_once BASE_DIR . 'app/library/Bootstrap.php';
   ,      ,      BASE_DIR   ,APPLICATION_ENV   
   ,      

$bootstrap = new Bootstrap();

if (APPLICATION_ENV == ENV_TESTING) {
    return $bootstrap->run();
} else {
    echo $bootstrap->run();
}
  Bootstrap  ,    

Bootstrapを見つけたphp,初期化ルーティングのコードは以下の通りである.
/**
     * Initialize the Router.
     */
    protected function initRouter()
    {
        ...
        $router = include BASE_DIR . 'app/routes/routes.php';
        ...
    }

ルーティングはこのようにフレームワークに含まれていて、私たちのroutesに行くことがわかります.phpは、元のルーティングをそれぞれのモジュールのファイルに分割し、routesに含める.php、このような利点は、モジュール化管理で、検索と修正が容易であることです.
routes.php



use Phalcon\Mvc\Router;

$router = new Router(false);
$router->removeExtraSlashes(true);


/**
 * loader the urls
 */
$urls = [
    'index',
    'shopcart',
    'user',
];
foreach ($urls as $url){
    include BASE_DIR.'app/routes/'.$url.'.php';
}

return $router;

user.php


/**
 *     
 */
$router->add(
    "/user/info",
    [
        "controller" => "user",
        "action"     => "info",
    ]
);