【Phalcon】ルーティング分割
前に書く
昨年PHPのFlightフレームワークを使ってapiを作成したことがありますが、Flightフレームワークは非常に簡単で、公式ドキュメントを見るのに少し時間がかかるだけで手書きコードを書くことができ、Restfulスタイルをサポートしています.最初は何も感じませんでしたが、需要があればルートを追加します.プロジェクトは大きくないので、全部で10個を超えません.
最近Phalconを使って、プロジェクトの規模は中等で、ルート(routes.php)のところで本論文で注目している痛みに出会って、数十のルートは1つのファイルの中に置いて、しかも引き続き中に入れて、一定の数量級に達して、もしある日、私がその中の1つのルート(名前を忘れたかはっきり覚えていない)を変更したいならば、マウスをスクロールして半日かけてやっと見つける必要があります.コードが混乱し、すべてのcontroller/actionがここで管理されています.
次のように
本文
痛みがある以上、解決策を考えなさい.
Phalconの通常のプロジェクト構造は大体こうです
ロードプロセス:
Bootstrapを見つけたphp,初期化ルーティングのコードは以下の通りである.
ルーティングはこのようにフレームワークに含まれていて、私たちのroutesに行くことがわかります.phpは、元のルーティングをそれぞれのモジュールのファイルに分割し、routesに含める.php、このような利点は、モジュール化管理で、検索と修正が容易であることです.
routes.php
user.php
昨年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",
]
);