EC-CUBE 3.1-αの拡張機構を試してみる
3/15、16に、EC-CUBE 3.1-αの方針説明会が開催されました。
資料は以下で公開されていますが、当日ライブコーディングでデモした内容は含まれていないので、こちらでも紹介したいと思います。
大きな方針としては、学習コストの低減とカスタマイズ性の向上の2点。
3.0での課題やフィードバックに対応していく予定です。
GitHubの、主要なissueやpull requestには、milestone:3.1、label:experimentalが振られていますので参考にしてください。
3.1-αのインストール
3.1-αは、experimental/3.1というブランチで開発が進められています。
パッケージ版は公開されていないため、GitHubからcloneしてくる必要があります。
// githubからclone
git clone --branch=experimental/3.1 https://github.com/EC-CUBE/ec-cube.git
// コマンドラインインストーラからインストール
cd ec-cube
php eccube_install.php sqlite
アノテーションでのルーティング制御
ここから、当日デモした内容です。
phpのビルトインサーバを立ち上げてれば簡単に動作確認を行うことができます。
// ビルトインサーバを立ち上げる
php -S localhost:8081 -t ./
3.1からルーティングの制御をアノテーション
という仕組みで行うことができるようになりました。
試してみるには、app/Acme/Controller
ディレクトリに、コントローラのクラスを配置します。
<?php
namespace Acme\Controller;
use Eccube\Application;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class HogeController
{
/**
* @Route("/hoge")
*/
public function index(Application $app)
{
return "hoge";
}
}
http://localhost:8081/index_dev.php/hoge にアクセスし、hoge
という文字列が表示されていれば成功です。
既存のルーティングを上書きすることもできます。
/**
* @Route("/")
*/
public function index(Application $app)
{
return "hoge";
}
http://localhost:8081/index_dev.php/ にアクセスすると、トップページから、hogeという文字列が表示されるように変わっているはずです。
どう変わったか
3.0では、コントローラを新たに追加する際には
- コントローラのクラスを追加する
-
src/Eccube/ControllerProvider/Front(Admin)ControllerProvider.php
にルーティングの定義を追加する
を行う必要がありました。
また、コアコードに手を入れずに拡張するには、プラグイン機構を利用し、プラグイン関連のファイルを設置する必要があり、非常に手間のかかるものでした。
3.1ではアノテーションを利用できるようになり、だいぶ簡略化されているのがわかるかと思います。
また、購入フローのコントローラを参照いただければわかりますが、コントローラ内のメソッドが、細かな粒度に分割されています。これにより、処理の一部の振る舞いを変更する、といったことも可能になります。
利用できるアノテーション
@Route
アノテーション以外にも、以下のアノテーションが利用できます。
@Route
@Method
@Template
@Security
それぞれのアノテーションの利用方法は、app/Acme/Controller
以下にサンプルを作成していますので、参考にしてみてください。
Author And Source
この問題について(EC-CUBE 3.1-αの拡張機構を試してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/chihiro-adachi/items/353e54b2979b4828a828著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .