类实例化在Laravel3的所有模型中使用


class instantiation for use across all models in Laravel3

我使用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