направить меня, что именно гуглить.. пробел в теории видимо..
есть интерфейс с описанием методов и есть класс, который имплементирует интерфейс и реализует методы.
есть другой класс:
protected $var;
__construct(MyInterface $var)
{
$this->var = $var;
}
public function methodFromCurrentClass()
{
return $this->var->methodFromClassImplementsInterface();
}
Вот как мне понять, каким образом, не указывая класс с реализацией методов из интерфейса, в методе methodFromCurrentClass появилась возможность вызвать эти методы? даже не понимаю, как нагуглить? Спасибо заранее!!!
В смысле не указывая, а в конструкторе у тебя что?
в конструкторе __construct(MyInterface $var) { $this->var = $var; }
Ну вот поэтому и получилось. У тебя в каком-то из сервис-провайдеров прибинжена реализация к интерфейсу.
Чет не понял вопроса) инициализировал класс в переменной и вызвал метод
В ларавеле в сервис-провайдере. В симфони это будет работать и без настройки, если реализация у интерфейса всего одна: он сам найдет эту реализацию и засунет в контейнер.
Ну интерфейс, класс какая разница)
ну если я в type hinting указываю класс, то я пойму почему он окажется в переменной, в php 8 это поинтереснее сделать, не указывая в теле метода присваивание, все в аргументах. отошли от темы) а вот непонятно было, что я указываю интерфейс, а у меня там класс)
Интерфейсы и нужны чтобы описывать определенные классы связанные контрактом
нашел) теперь понял, откуда ноги растут) у меня была идея, но подумал, что вряд ли автоматически (как Вы сказали в симфони) работает...
Никогда так не будет. У команды Тейлора мозгов хватает только на autodiscovery классов из определенных папок.
понял) буду знать)))
воу воу симфони-бой
вот эта крутая тема
а еще 1 тупой вопрос. если можно. это же какой-то паттерн? Или как это назвать?) если паттерн, то какой?)
Хорошо, ларавел-герл.
Какой паттерн, ты про di?
DI?
autowire удобная штука
скорее всего он про то, как симфони ищет класс который реализизует интерфейс
То, что я описал, это не autowire. autowire – это когда ты дал контейнеру класс, а он его создал по той информации, что у него есть. Обычно с помощью рефлексии. А то, что симфони ищет сама, это не паттерн, а простой анализ проекта через installed.json и токенизацию
в ларе такое можно провернуть?
а ну это и есть DI, верно?)
Обсуждают сегодня