2013-05-08 5 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

+0

Уверен, вы могли бы это сделать. [Ниже приведена дополнительная информация о контейнерах IoC] (http://codehappy.daylerees.com/ioc-container), которые могут пролить некоторый дополнительный свет на то, где и как их использовать. – tplaner

+0

Отлично, спасибо большое, оцените руководство! – pgtips

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

Смежные вопросы