[CakePHP2.x]AppHelperからコンポーネントを呼び出す

ヘルパーからコンポーネントを呼び出す方法がよくわからなくて調べた。

<?php
$this->view->controller->HogeComponent->method();
?>

てのがあったが、これはCakePHP1系の場合のようだ。

2系だとたとえば以下のようにするようだ。

<?php
SessionComponent::read('Auth.User.id');
?>

が、この呼び方、推奨されないらしい。
Non-static methodのワーニングが出る。

たぶん
http://php.net/manual/ja/migration56.deprecated.php
これが原因。

ということでもう一度調べなおす。

$session = new SessionComponent(new ComponentCollection());
$session->read('Auth.User.id');

これが正しい使い方みたいです。
うーん。ComponentCollection()って何ぞや、とみてみたら、CakePHPで自動的によろしくやってくれて、ロードしてくれるクラスみたい。
ほかにもHelperCollectionとかいろいろあるみたい。

ちなみに
FormHelper::input(); みたいに、自分から派生したヘルパーをこの呼び方で呼び出しても警告とかでない。
うーーーん。そういうものなのか?

PHPはC言語とかとちがってちゃんとした言語の仕様書がないから、ほんとに困る。

タイトルとURLをコピーしました