1

一部のクラスとオブジェクトをすべてのMVCレイヤーからアクセスできるようにするにはどうすればよいですか?

たとえば、現在のユーザーのプロファイルとconfig.iniファイルにグローバルにアクセスしたいとします。

Zend Framework 1.xでは、この目的でZend_Registeryを使用していました。

4

3 に答える 3

3

これには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に独自のレジストリサービスを登録できます。興味のある方は、ここに例を示します。

于 2013-02-14T16:42:51.913 に答える
1

いくつかのファルコンの問題のために拡張スケルトンを作成しました。これはそのうちの1つでした。

ここでプロジェクトをチェックアウトしてください:https ://github.com/alanbarber111/cloud-phalcon-skeleton

しかし、基本的にCloud::app()->getPhalconDi()またはCloud::app()->getPhalconRouter()またはCloud::app()->getPhalconApplication()アプリのどこからでも呼び出すことができます

于 2014-03-16T03:33:12.837 に答える
0

Phalconには、私が役立つと思った組み込みのレジストリサービスが含まれていることに言及する価値があります。

https://docs.phalconphp.com/en/latest/api/Phalcon_Registry.html

于 2015-06-20T02:54:39.330 に答える