2016-12-08 3 views

ответ

0

Вы можете привнести интерфейс в класс, как это:

interface ConnectionInjector{ 
    public function injectConnection(Connection $con); 
} 

class UserProvider implements ConnectionInjector{ 
    protected $connection; 

    public function __construct(){ 
     ... 
    } 

    public function injectConnection(Connection $con){ 
     $this->connection = $con; 
    } 
} 

Надеется, что это помогает!

+0

Хм, я не думаю, что вы в полной мере понять вопрос. Я не пытаюсь использовать интерфейс классов. Я хочу ввести другой интерфейс, который разрешает МОК. – panthro

-1

Если вы хотите способ для переплета Интерфейсов реализаций, то вы можете сделать это в register методы вашего App\Providers\AppServiceProvider класса как:

$this->app->bind('some\interface', 'some/class_implementation'); 

От Docs

очень мощное средство контейнер обслуживания - это его способность связывать интерфейс с конкретной реализацией. Например, предположим, что у нас есть интерфейс EventPusher и реализация RedisEventPusher. После того, как мы закодировали наши RedisEventPusher реализацию этого интерфейса, мы можем зарегистрировать его с контейнером службы так:

$this->app->bind(
    'App\Contracts\EventPusher', 
    'App\Services\RedisEventPusher' 
); 

Это утверждение сообщает контейнеру, что он должен впрыскивать RedisEventPusher когда класс нужен реализация EventPusher. Теперь мы можем ввести-намекают интерфейс EventPusher в конструкторе, или любое другое место, где зависимости впрыскивают контейнером службы :

use App\Contracts\EventPusher; 

/** 
* Create a new class instance. 
* 
* @param EventPusher $pusher 
* @return void 
*/ 
public function __construct(EventPusher $pusher) 
{ 
    $this->pusher = $pusher; 
} 
+0

Это не работает, работает только в контроллерах. – panthro

+0

В вашем вопросе вы попросили «Внутри класса», и я думаю, что контроллеры также являются классами. Если у вас есть какие-либо конкретные варианты использования, предоставьте в своем вопросе, чтобы мы могли вам помочь. –

+0

Итак, мой вариант использования - это любой класс, но контроллер. Спасибо за вашу помощь. – panthro

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