hissy様
ご回答ありがとうございます!大変助かりました。
hissy様に頂いた方法にて実装させて頂きます。
「concrete/config/app」にてエイリアス登録されている為、変更すれば容易にカスタマイズできると
思っていたのですが、確かにfullで指定されている理由は難しいですね。
(Applicationの記載をfullからaliasにすると問題なく動作したので、ミスのような気がしますが)
ありがとうございました。
PageCacheの拡張
2015年5月22日 at 15:10
いつも拝見し勉強させて頂いております。
キャッシュ機能の拡張するパッケージを作成しているのですが、
拡張した「PageCache」クラスをどのように組み込むか悩んでおります。
「Concrete/application/bootstrap/autoload」の中で「PageCache」のエイリアス再定義を行って参照先を変更しました。
しかし、「Concrete/application/bootstrap/startup」から実行する「Application」クラスでは、「PageCache」クラスをエイリアスで定義していない為、カスタマイズした「PageCache」クラスが実行できなく、どのような方法で実装するのが良いかご教示頂けますでしょうか。
concrete5は、「5.7.4.1」versionを利用しています。
よろしくお願いします。
タグ:
Re: PageCacheの拡張
2015年5月22日 at 18:32
つづきでの質問となり恐縮ですが、よろしくお願い致します。
adapterを利用したライブラリー開発につきまして、
「PageCache」クラスでは、concrete.php内の「adapter」設定値からクラスを読み込みにいきますが、
「PageCache」クラス「getLibrary」において「\\Concrete\\Core\\Cache\\Page\\」をprefixとしてロードしています。
prefixから、「PageCache」クラスを継承したカスタムクラスの配置場所は、「concrete/src/Cache/Page/」の下に置くことを意図しているのでしょうか?
「concrete/」配下は、拡張において一切触らない認識でいたので少々混乱しています。
実装につきまして、見識やご経験ありましたらアドバイス頂ければ幸いです。
よろしくお願い致します。
adapterを利用したライブラリー開発につきまして、
「PageCache」クラスでは、concrete.php内の「adapter」設定値からクラスを読み込みにいきますが、
「PageCache」クラス「getLibrary」において「\\Concrete\\Core\\Cache\\Page\\」をprefixとしてロードしています。
prefixから、「PageCache」クラスを継承したカスタムクラスの配置場所は、「concrete/src/Cache/Page/」の下に置くことを意図しているのでしょうか?
「concrete/」配下は、拡張において一切触らない認識でいたので少々混乱しています。
実装につきまして、見識やご経験ありましたらアドバイス頂ければ幸いです。
よろしくお願い致します。
Re: PageCacheの拡張
2015年5月22日 at 19:07
確かに。5.7ではまだキャッシュアダプターを追加したことがないのですが、ここは見落とされてる可能性がありますね。core_class関数を使うよう、プルリクエストで提案してみると良いかもしれません。
Re: PageCacheの拡張
2015年5月23日 at 4:08
Re: PageCacheの拡張
2015年5月25日 at 18:15
hissy様
プルリクエストの内容にて実装確認させて頂いている中で、
他疑問点ありましたので、お時間あるタイミングで確認頂けたら幸いです。
パッケージにて、adapterの拡張(PageCacheクラスを継承したクラス)にて実装した場合、
「Concrete\Core\Foundation\Environment」「getOverrides」メソッドにて
「is_dir(DIR_PACKAGES_CORE)」の箇所がありますが、
「DIR_PACKAGES_CORE」→「DIR_BASE_CORE . '/packages'」とディレクトリ構成と不一致な内容と思われ、同様な処理を行っている箇所では、
「$dirp = (is_dir(DIR_PACKAGES . '/' . $pkgHandle)) ? DIR_PACKAGES : DIR_PACKAGES_CORE;」
と「DIR_PACKAGES」を主として取得していました。
これは、(5.6)時代の名残で「Environment」クラスの(5.7)未対応と考えられますでしょうか?
5.7から触り始め、経験が浅くいろいろとお聞きしてしまい大変申し訳ございません。
よろしくお願いします。
プルリクエストの内容にて実装確認させて頂いている中で、
他疑問点ありましたので、お時間あるタイミングで確認頂けたら幸いです。
パッケージにて、adapterの拡張(PageCacheクラスを継承したクラス)にて実装した場合、
「Concrete\Core\Foundation\Environment」「getOverrides」メソッドにて
「is_dir(DIR_PACKAGES_CORE)」の箇所がありますが、
「DIR_PACKAGES_CORE」→「DIR_BASE_CORE . '/packages'」とディレクトリ構成と不一致な内容と思われ、同様な処理を行っている箇所では、
「$dirp = (is_dir(DIR_PACKAGES . '/' . $pkgHandle)) ? DIR_PACKAGES : DIR_PACKAGES_CORE;」
と「DIR_PACKAGES」を主として取得していました。
これは、(5.6)時代の名残で「Environment」クラスの(5.7)未対応と考えられますでしょうか?
5.7から触り始め、経験が浅くいろいろとお聞きしてしまい大変申し訳ございません。
よろしくお願いします。
Re: PageCacheの拡張
2015年5月25日 at 18:20
コアパッケージは、concreteディレクトリ内にバンドルされているパッケージで、5.6の頃からあります。通常のパッケージはインストールが必要ですが、コアパッケージはコアと同時に有効になります。concrete5を独自CMSとして拡張して配布する際には有用なオプションですが、ほとんど使われていないと思います。
Re: PageCacheの拡張
2015年5月28日 at 18:47
度々申し訳ありませんが質問させてください。
Cache機能の拡張につきまして、
パッケージにて実現する際に「concrete/bootstrap/start.php」の処理からすると、
キャッシュされているかの確認する処理「$response = $cms->checkPageCache($request);」の後で
「$cms->setupPackages();」が実行されるため、「PageCache::getLiblary」にてパッケージに含むCache拡張クラスが見つけられなく何かしら事前に処理が必要なのか悩んでおります。
実現方法につきまして、ご教示頂けませんでしょうか?
お時間ありましたら、お手数ですがよろしくお願い致します。
Cache機能の拡張につきまして、
パッケージにて実現する際に「concrete/bootstrap/start.php」の処理からすると、
キャッシュされているかの確認する処理「$response = $cms->checkPageCache($request);」の後で
「$cms->setupPackages();」が実行されるため、「PageCache::getLiblary」にてパッケージに含むCache拡張クラスが見つけられなく何かしら事前に処理が必要なのか悩んでおります。
実現方法につきまして、ご教示頂けませんでしょうか?
お時間ありましたら、お手数ですがよろしくお願い致します。
Re: PageCacheの拡張
2015年5月28日 at 19:37
仰る通り、フルページキャッシュの確認は、concrete5のアプリケーションライフサイクルにおける非常に早いタイミングで行われますので、パッケージからの拡張は不可能です。私が送ったプルリクエストも、あくまで application ディレクトリにて拡張を行いたいというリクエストで、パッケージからの拡張は意図していません。
Your post has been saved and will be published after approval by the forum moderator.
takuro hishikawa
Re: PageCacheの拡張