CakePHP2.x の Shell で Component を使う、というよくありそうな要件です。
検索してみて色々出てくるのですが、微妙に上手く行かなかったり、上手くいくものの「こっちの方が正しいのでは?」と思えたりしたので、下記にメモしておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php App::uses('Shell', 'Console'); App::uses('ComponentCollection', 'Controller'); App::uses('TransactionComponent', 'Controller/Component'); App::uses('SqlDumpComponent', 'Controller/Component'); /** * Application Shell * @package app.Console.Command */ class AppShell extends Shell { public function startup() { $this->components = new ComponentCollection(); $this->Transaction = $this->components->load('Transaction'); $this->SqlDump = $this->components->load('SqlDump'); } } |
特に難しいことをしているわけでなく、ComponentCollection を new し、そこから load するのが良さそうなのかな、ということですが、ComponentCollection を自分で new するのに少々疑問もあるのです。 (; ^ω^)
もしより良い方法があればどなたかご教示ください。