一部のクラスとオブジェクトをすべてのMVCレイヤーからアクセスできるようにするにはどうすればよいですか?
たとえば、現在のユーザーのプロファイルとconfig.ini
ファイルにグローバルにアクセスしたいとします。
Zend Framework 1.xでは、この目的でZend_Registeryを使用していました。
これにはDIコンテナを使用できます。
設定にアクセスする簡単な方法は、次のようにブートストラップにラムダ関数を作成することです。
$configFile = require(ROOT_PATH . '/web/config/global.php');
// Create the new object
$config = new \Phalcon\Config($configFile);
// Store it in the Di container
$this->di['config'] = $config;
コントローラからこのオブジェクトにアクセスするのは、次のように簡単です。
$config = $this->config;
アプリケーションの他の部分から、いつでもDiコンテナーを取得して、そこから次のようにアクセスできます。
$di = \Phalcon\DI\FactoryDefault::getDefault();
$config = $di->config;
ここでブートストラップの例を見てください。これは、サービスがDiコンテナにどのように登録されるかを示しています。
現在のユーザープロファイルに従って、上記の構成と同じ方法で、いつでもSessionコンポーネントを使用してその情報を保存し、自由に取得できます。
最後に、Phalconに独自のレジストリサービスを登録できます。興味のある方は、ここに例を示します。
いくつかのファルコンの問題のために拡張スケルトンを作成しました。これはそのうちの1つでした。
ここでプロジェクトをチェックアウトしてください:https ://github.com/alanbarber111/cloud-phalcon-skeleton
しかし、基本的にCloud::app()->getPhalconDi()
またはCloud::app()->getPhalconRouter()
またはCloud::app()->getPhalconApplication()
アプリのどこからでも呼び出すことができます
Phalconには、私が役立つと思った組み込みのレジストリサービスが含まれていることに言及する価値があります。
https://docs.phalconphp.com/en/latest/api/Phalcon_Registry.html