CakePHPのComponentについて。
CakePHPでは各コントローラに共通の処理をComponentとしてモジュール化することができます。
わかりやすいところでいえば認証のAuth,Sesssion,Cookieなどがそうです。
ただこれを自分で作ることもできたりします。
※たとえばSampleComponentというComponentを書きたいとします。
./src/Controller/Component/SampleComponent.php
1 2 3 4 5 6 7 8 9 |
namespace App\Controller\Component; use Cake\Controller\Component; class SampleComponent extends Component { public function addAmount($amount1, $amount2) { return $amount1 + $amount2; } } |
これだけでOKです。あとはController側で読み込ませます。
1 2 3 4 5 |
public function initialize() { ・・・・・ $this->loadComponent('Sample'); } |
これでOKです。
またテストですが、下記のように書きます。
./tests/TestCase/Controller/Component/SampleComponentTest
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
namespace App\Test\TestCase\Controller\Component; use App\Controller\Component\SampleComponent; use Cake\TestSuite\IntegrationTestCase; use Cake\Controller\ComponentRegistry; class SampleComponentTest extends IntegrationTestCase { public function testAddAmount() { //componentのテストのためにはComponentRegistryが必要 $sampleComponent = new SampleComponent(new ComponentRegistry()); $res = $sampleComponent->addAmount(3,4); $this->assertEquals( $res, 7); } } |
参考リンク