1

フレームワークのような基本的な mvc があり、依存性注入に pimple を使用したいのですが、フレームワーク内で使用する方法がわかりません。これが私のアプリ構造です。

x-framework
  - config
  - app
      controller
         homeController.php
  - core
  - vendor
     pimple
       lib
         pimple.php
  - public

さて、homeController.php私は Pimple を使用したいと思いますがnew Pimple、この例に見られるように実際には行いません.

use vendor\pimple; 

class homeController
{
 function index(){
  $app = new Pimple();
  $app['orm'] = $app->share({ return new vendor\orm; });

  $orm = $app['orm'];


  $orm->table('foo'); 
  $orm->findFirst(['name'=>'john']);
}
}

この例に見られるように、すべてのコントローラーで pimple クラスを初期化するのは非常に面倒な作業になります。これはどのように正しく行われますか?

4

2 に答える 2

-2

にきびで HomeController クラスを拡張するだけです

class HomeController extends Pimple {
  public function __construct() {
    $this['orm.class']= 'vendor\orm'; 
    $this['orm'] = $this->share(function($c){ return new $c['orm.class']; });
  }
}

//and use it directly just after instanciation
$controller = new HomeController();
// you can modify parameters if you need
$controller['orm.class'] = 'myothervendor\orm';
//And get class
$orm = $controller['orm'];
$orm->table('foo'); 
$orm->findFirst(['name'=>'john']);

私はそれがあなたが望むことを願っています:)乾杯

于 2014-11-16T23:50:51.583 に答える