|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
||||||
Что должен вернуть метод при return $this?05.09.2021, 21:13. Показов 6128. Ответов 40
Есть метод контейнера, чтобы по 100 раз не писать имя метода при заполнении контейнера, то прописал ему return $this, в результате чего PhpStorm подсвечивает метод, мол нужно прописать ему возврат и автоматически проставляет:
0
|
||||||
| 05.09.2021, 21:13 | |
|
Ответы с готовыми решениями:
40
Метод должен вернуть адрес ip сети Что return должен возвращать из функции? |
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
|
||||||||||||||||
| 05.09.2021, 22:46 | ||||||||||||||||
Сообщение было отмечено DefenseMinister как решение
Решение
DefenseMinister,
static указывает на класс текущего объекта, когда self указывает на класс в котором этот метод описан. Короче это для наследников, так как вы возвращаете $this - это будет более точное указание типа. И это появилось в php 8, ранее нельзя было указать static в качестве возвращаемого типа.
1
|
||||||||||||||||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
|
| 05.09.2021, 23:03 [ТС] | |
|
sad67man, не ну я знаю суть static и self, но почему-то по глазам уж сильно резанула такая автоподстановка, я с неделю как 8 версию юзаю и IDE обновил раньше на 2019.3 сидел с 7.3 версией
![]() благодарю
0
|
|
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
|
|||||||||||||||||||||
| 06.09.2021, 12:35 | |||||||||||||||||||||
|
DefenseMinister, Кстати, чтоб упростить вызов, вы можете устанавливать definitions массивом, добавив метод
DefenseMinister, Вообще по PSR у контейнера должно быть всего 2 метода get() и has(). Вижу, что в методе set вы удаляете results[$id] - трудно представить такую ситуацию, когда вы что-то получаете из контейнера до того, как установили все definitions. И если вам необходим некие методы для заполнения контейнера, то лучше это вынести в отдельный класс. Проведем аналогию с автомехаником. В процессе езды вам уже не нужны услуги автомеханика, вы же не собираете его в процессе езды. Т.е. вы можете сделать так
1
|
|||||||||||||||||||||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
||||||
| 06.09.2021, 12:44 [ТС] | ||||||
|
sad67man, у меня контейнер на минималках
0
|
||||||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
|
|||
| 06.09.2021, 12:54 | |||
Сообщение было отмечено DefenseMinister как решение
РешениеИ без рефлексии задолбаетесь описывать каждый класс. В контейнере описываются только те классы, которые необходимо конфигурировать. К примеру PDO, или для View необходимо указать путь к папке с вьюшками. Остальное он должен уметь создавать сам, парся через рефлексию контруктор класса и подставлять через get() Добавлено через 5 минут Inverse of Control - это некий абстрактный принцип, набор рекомендаций для написания слабо связанного кода. Суть которого в том, что каждый компонент системы должен быть как можно более изолированным от других, не полагаясь в своей работе на детали конкретной реализации других компонентов. Если он вам не нужен - это другое дело. Тут я бессилен)
1
|
|||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
|
| 06.09.2021, 13:07 [ТС] | |
|
sad67man,
у меня структура приложения не нуждается в контейнере, я в приложении создал роутер (если надо в приложении перед вызовом роутера подключить дебаггер, то создаю в App дополнительно View, чтобы пробросить в дебаггер методы для отрисовки страниц ошибок), заполняю методами роутера массив маршрутов, потом я стартую в приложении метод роутера (пробрасываю в него View, если он создавался для дебаггера), этот метод создаёт Request получает его методами из массива маршрутов нужный и создаёт объект с вызывом метода-экшена, в конструктор его мы пробрасываем View и Model, а так же передаём экшену параметром Request - это два свойства абстрактного контроллера приложения, которые нам нужны в уже созданном объекте-экшене для обращения к БД и отрисовки вида, в экшене внедрением Request мы имеем доступ к методу getBody для получения GET и POST массивов в зависимости от того каким методом получен маршрут - ВСЁ!!! Вот и вся суть приложения, мне не нужно больше ничего мудрить, я клыпаю на клыпачки помещаю или получаю данные из БД и рисую данные в видах, остальное всё моделями формируется единственное, что я для себя открыл в контейнере, в таком, какой он у меня на минималках, так это мне не нужно для PDO создавать одиночку, потому что контейнер его закеширует в results и н там постоянно один экземпляр будет, всё что я нового и полезного извлёк из контейнера
0
|
|
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
||||||
| 06.09.2021, 13:22 [ТС] | ||||||
|
sad67man, вот работает сайт на счёт раз-два
0
|
||||||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
||||||
| 06.09.2021, 13:34 [ТС] | ||||||
|
sad67man, а вообще это всё можно сделать так
0
|
||||||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
|
||||||||||||||||||
| 06.09.2021, 14:20 | ||||||||||||||||||
Сообщение было отмечено DefenseMinister как решение
Решение
DefenseMinister, Да я уже кое-что описал по этой архитектуре Декоратор или свойство?
Добавлено через 4 минуты Добавлено через 1 минуту DefenseMinister, В данном случае нужно понимать, что Resolver единственный, кто получает Контейнер в качестве зависимости, ровно для того, чтоб создать контроллер. Все остальные классы не должны знать о его существовании. Добавлено через 13 минут DefenseMinister, Контроллер может тогда выглядеть таким образом
1
|
||||||||||||||||||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
||||||||||||
| 06.09.2021, 14:32 [ТС] | ||||||||||||
|
sad67man, надо будет потестить руками погонять такой подход на прочтение не полностью доходит что куда летит
![]() кстати вот эта проверка меня смущает
, НО, если в классе нет такого метода, А в конструкторе что-то вроде проверки с отлупом, то мы получается нарываемся на МЕТОД НЕ НАЙДЕН, в то время как класс его и не собирается вызывать, пока не отработал конструкторможет быть правильно проверять метод уже из объекта?
Добавлено через 6 минут ну и так далее... Добавлено через 54 секунды в итоге понасоздавали классов и получили Hello World
0
|
||||||||||||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
|
||||||||||||
| 06.09.2021, 14:42 | ||||||||||||
|
А так вы правы - лучше создать сначала контроллер
DefenseMinister, Вам следует переступить этот порог боязни создать лишний класс. Не бойтесь создавать классы. Их можно писать столько сколько потребуется. Тем более, что в PhpStorm-e это секундное дело. В данном случае мы вынесли в отдельный класс, потому что сам контейнер роутеру не нужен. Это разделение по ответственностям. Более того вы можете его повторно использовать к примеру.
1
|
||||||||||||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
|
| 06.09.2021, 14:49 [ТС] | |
|
sad67man,
смотри в Resolver прилетает Container и потом Resolver улетает в Router, ну так с таким же успехом я могу Container отправить в Router и достать из него всё что надо там, а не из резольвера, который это же достает из него я не пойму почему из контейнера я должен по капле что-то выбирать если у меня есть контейнер ЗАВИСИМОСТЕЙ, если это зависимости моего приложения, то почему я не могу к ним иметь доступ в любом месте ТУПО ПЕРЕДАВАЯ контейнер из класса в класс ))) то что ты мне постоянно пишешь о том что один класс не должен знать о существовании другого - нарушает моё представление о контейнере нахера нам контейнер зависимостей если мы изолируем классы друг от друга? и почему нужно мучить жопу не передав контейнер и достав оттуда всё что нужно, а должны передать только то что нужно ведь в контейнере и так всё уже создаётся и хранится, какая разница хранить всё и дёргать одно или дергать одно при том что всё уже и так хранится, нахера мне куча параметров при передаче, если я могу одним параметром передать контейнер УЖЕ СОЗДАННЫЙ ничего там лишнего нет, там то же самое в нём, что и при передаче одного параметра из контейнера, он такой же контейнер он не разрастается и не уменьшается при передаче всего контейнера))) )))
0
|
|
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
|
|||||||
| 06.09.2021, 14:54 | |||||||
1
|
|||||||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
|
| 06.09.2021, 14:59 [ТС] | |
|
sad67man, а ну теперь вроде понял, автоматом будут залетать те зависимости, которые параметрами указаны в классе, дошло вроде
0
|
|
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
|
||
| 06.09.2021, 15:05 | ||
|
Есть такое понятие как "скрытая зависимость". Сколько раз я видел да даже на этом форуме, когда люди, сталкиваясь с этой проблемой пытались костылять и танцевать с бубном, чтоб добиться нужного результата. По сути если прокидывать сам контейнер во все классы, то это равнозначно тому, если вы будете использовать те же антипатерны синглтоны с методами getInstance(). Если рассматривать класс снаружи, когда все что находится внутри для нас черный ящик. То мы видим, что он принимает в контруктор целый контейнер - и это не несет никакой информации, и мне становится страшно, что он там может из него дергать все что угодно.
1
|
||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
||
| 06.09.2021, 15:08 [ТС] | ||
|
я про магию с рефлексией догнал короче
0
|
||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
|
||||||||||||||||||||||
| 06.09.2021, 15:17 | ||||||||||||||||||||||
|
Еще контейнер служит, чтоб сопоставлять интерфейсы. К примеру
1
|
||||||||||||||||||||||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
||||||
| 06.09.2021, 17:15 [ТС] | ||||||
|
sad67man, контейнер мне так собирать?
0
|
||||||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
|
||||||||||||||||
| 06.09.2021, 17:30 | ||||||||||||||||
|
DefenseMinister, Нет лучше это делать снаружи класса.
DefenseMinister, Есть библиотека для более умного смерживания конфигов. https://github.com/zendframewo... aggregator
0
|
||||||||||||||||
| 06.09.2021, 17:30 | |
|
Помогаю со студенческими работами здесь
20
Метод класса должен вернуть этот класс Метод который должен вернуть коллекции <элемент массива,частота> WCF метод должен вернуть приемлемый тип для dataGridView Рекурсия: верно ли, что return result должен сработать n-1 раз? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|