2013-05-08 30 views
0

我正在使用Laravel 3(新增功能)。我有一個我用作庫的API幫助器類。我想讓這個類實例化,以便我可以在我的所有模型中使用它來訪問API。我正在努力研究如何在每個模型中沒有實例化的情況下做到這一點。一個例子會很棒。謝謝。在Laravel3的所有模型中使用的類實例化

回答

1

有幾種方法可以做到這一點,最簡單的方法可能就是創建一個base模型,在該模型中實例化API幫助程序類,然後爲要訪問的所有模型擴展該基本模型API。

它看起來是這樣的:

// base.php 
class Base { 

    public static function api() 
    { 
     return new YourApiClass; 
    } 

} 

// user.php 
class User extends Base { 

    public static function name() 
    { 
     return parent::api()->callApiMethod(); 
    } 

} 

你也可以使用Laravel 3's IoC container,這可能是取決於你在做什麼更好的選擇。

+0

這會有所幫助,謝謝。如果我在構造函數的基類中使用IoC容器,然後嘗試在其他模型中使用它,該怎麼辦? – pgtips 2013-05-08 18:40:36

+0

當然你可以做到這一點。 [這裏是一些關於IoC容器的附加信息](http://codehappy.daylerees.com/ioc-container),它可以闡明在哪裏以及如何使用它們。 – tplaner 2013-05-08 18:46:07

+0

太好了,非常感謝,感謝指導! – pgtips 2013-05-08 18:49:16

1

使用IoC容器。

實例化類:

IoC::register('mailer', function() 
{ 
    $transport = Swift_MailTransport::newInstance(); 

    return Swift_Mailer::newInstance($transport); 
}); 

然後當你需要訪問你的情況下,你只需要:

IoC::instance('mailer', $instance); 

參考:http://laravel.com/docs/ioc

+0

我該如何解決它,以便我可以在所有類方法中使用該實例?構造函數? – pgtips 2013-05-09 02:56:44