Cake PHP コンポーネントでモデルを使用する方法

知っている限りだと、2通りのやり方があります。(他にあるかもですが・・・

1.loadModel() でモデル指定
2.コントローラーのオブジェクト渡し


1.loadModel() でモデル指定

cakePHPの関数にてloadModel関数があります。それを使用する。
私は主にこっちを使ってます。

<?php
// 使用するモデルクラスの呼び出し
loadModel('hoge');
loadModel('hogehoge');

class TestComponent extends Object{

    public function aaaaa(){
        $hoge_dao     = new hoge();
        $hogehoge_dao = new hogehoge();

        $hoge_data    = $hoge_dao->findAll();
        $hogehoge_data= $hogehoge_dao->findAll();

    }

2.コントローラーのオブジェクト渡し
使用する関数の引数にコントローラーのオブジェクトを渡すもしくは、startupメソッドを使用する。
呼び出し元のコントローラにて、モデルを呼び出す必要があります。
わけわからんくなるので、必要最小限しか使ってません。

<?php
class TestComponent extends Object{
    private $controller;

    // startupはコントローラで指定があると自動的に実行される
    public function startup(&$controller){
        $this->controller = $controller;
    }
    // $this->controllerを使用する場合
    public function aaaaa(){
        $hoge_data    = $this->controller->hoge->findAll();
        $hogehoge_data= $this->controller->hogehogehoge->findAll();
    }
    // 引数にオブジェクトを渡す場合
    public function bbbbb(&$controller){
        $hoge_data    = $controller->hoge->findAll();
        $hogehoge_data= $controller->hogehogehoge->findAll();
    }