170 похожих чатов

Привет всем, буду очень благодарен за какую-нибудь помощь. хотя бы

направить меня, что именно гуглить.. пробел в теории видимо..

есть интерфейс с описанием методов и есть класс, который имплементирует интерфейс и реализует методы.

есть другой класс:
protected $var;

__construct(MyInterface $var)
{
$this->var = $var;
}

public function methodFromCurrentClass()
{
return $this->var->methodFromClassImplementsInterface();
}

Вот как мне понять, каким образом, не указывая класс с реализацией методов из интерфейса, в методе methodFromCurrentClass появилась возможность вызвать эти методы? даже не понимаю, как нагуглить? Спасибо заранее!!!

22 ответов

10 просмотров

В смысле не указывая, а в конструкторе у тебя что?

Михаил-Игнатов Автор вопроса

в конструкторе __construct(MyInterface $var) { $this->var = $var; }

Ну вот поэтому и получилось. У тебя в каком-то из сервис-провайдеров прибинжена реализация к интерфейсу.

Чет не понял вопроса) инициализировал класс в переменной и вызвал метод

В ларавеле в сервис-провайдере. В симфони это будет работать и без настройки, если реализация у интерфейса всего одна: он сам найдет эту реализацию и засунет в контейнер.

Ну интерфейс, класс какая разница)

Михаил-Игнатов Автор вопроса

ну если я в type hinting указываю класс, то я пойму почему он окажется в переменной, в php 8 это поинтереснее сделать, не указывая в теле метода присваивание, все в аргументах. отошли от темы) а вот непонятно было, что я указываю интерфейс, а у меня там класс)

Интерфейсы и нужны чтобы описывать определенные классы связанные контрактом

Михаил-Игнатов Автор вопроса

нашел) теперь понял, откуда ноги растут) у меня была идея, но подумал, что вряд ли автоматически (как Вы сказали в симфони) работает...

Никогда так не будет. У команды Тейлора мозгов хватает только на autodiscovery классов из определенных папок.

Михаил-Игнатов Автор вопроса

понял) буду знать)))

воу воу симфони-бой

вот эта крутая тема

Михаил-Игнатов Автор вопроса

а еще 1 тупой вопрос. если можно. это же какой-то паттерн? Или как это назвать?) если паттерн, то какой?)

Хорошо, ларавел-герл.

Какой паттерн, ты про di?

DI?

autowire удобная штука

скорее всего он про то, как симфони ищет класс который реализизует интерфейс

То, что я описал, это не autowire. autowire – это когда ты дал контейнеру класс, а он его создал по той информации, что у него есть. Обычно с помощью рефлексии. А то, что симфони ищет сама, это не паттерн, а простой анализ проекта через installed.json и токенизацию

в ларе такое можно провернуть?

Михаил-Игнатов Автор вопроса

а ну это и есть DI, верно?)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта