我使用Laravel 3(新)。我有一个API助手类,我将其用作库。我想要实例化那个类,这样我就可以在所有模型中使用它来访问API。我正在努力弄清楚如何做到这一点,而不实例化它一次在每个模型。举个例子就好了。谢谢。
有几种方法可以做到这一点,最简单的可能只是创建一个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的IoC容器,这可能是更好的选择,取决于你在做什么。
使用IoC容器
实例化类:
IoC::register('mailer', function()
{
$transport = Swift_MailTransport::newInstance();
return Swift_Mailer::newInstance($transport);
});
然后当你需要访问你的实例时你只需要:
IoC::instance('mailer', $instance);
参考:http://laravel.com/docs/ioc