AgentSmith72
@AgentSmith72
JS - это моё хобби

Как протестировать производительность функций начинающему php-разработчику?

Здравствуйте, недавно при показе своего MVC фреймворка опытному разработчику, он сказал, что я зря гоняю переменную в аргументах, а лучше обращаться к ней, как к свойству класса.

Возникла дилемма, как лучше создавать архитектуру MVC:

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

или

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

Каким способом самому протестировать архитектуру, чтобы точно видеть разницу в использовании системных ресурсов, как в первом случае, так и во втором?

Благодарю за уделённое время.
  • Вопрос задан
  • 284 просмотра
Решения вопроса 1
AgentSmith72
@AgentSmith72 Автор вопроса
JS - это моё хобби
Комментировать
Пригласить эксперта
Ответы на вопрос 4
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Как абсолютно верно заметил Роман Юрьевич Ипатьев, проблема не в вызове аргументов, а в абсолютно нелогичном подходе к архитектуре, которая тут просто швах...

Просто на будущее - архитектура в разы важнее скорости исполнения, так как ресурсов всегда можно накинуть, а с кривой архитектурой ни поддержка, ни нормальная работа невозможна. Вы экономите 2 байта на каких-то мелких манипуляциях через Ж, при этом в коде совершенно невозможно разобраться, а любая модификация функционала может уронить весь проект или заставить менять код в 40 местах.

Файл RouteController.php обрабатывает URL
уже плохо, контроллер не должен знать что-то про урл и прочие переменные извне. Для этого есть роутер и реквест.

и делает вывод о типе контроллера (гость, авторизованный пользователь или администратор).
Как тип контроллера соотносится с ролью пользователя?

Создаёт объект этого контроллера и отправляет в него аргументами (str)имя контроллера и (str) полученный URL.
У вас же уже вызван контроллер, RouteController.php, либо он не контроллер, либо зачем тогда снова контроллер создавать? И зачем ему урл?

Эти аргументы попадают в родительский контроллер файла Controller.php и оттуда далее используются в условном ветвлении и передаются в соответствующие функции, где дальше из этих функций опять передаются в нужные функции.
Сложнааа, слоожжнаа (с) Карина. Очень запутанно и очень странно работает ваша творческая мысль.

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

Про то как оно примерно должно работать рассказывать наверное не стоит, чтобы не смутить ваш творческий поиск готовыми решениями. Если будет интересно - Дмитрий скинул вам замечательный курс от Елисеева, прям рекомендую.
Ответ написан
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Никак.
Никакой разницы в использовании системных ресурсов для разных способов вызова функций нет.

Оценивать тот или иной подход следует с точки зрения архитектуры, а не воображаемой разницы в использовании системных ресурсов.
Но для этого надо задать другой вопрос, или по крайней мере отредактировать этот, убрав из него все фантазии про системные ресурсы.
Ответ написан
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
@Vitsliputsli
Этот разработчик имел ввиду, что вы "гоняете через аргументы" является свойством класса, и таковым и надо его сделать. Нет смысла это задавать извне, если это неизменяемая часть класса.
А потому, скорее всего никакой речи о "борьбе за ресурсы" не было и в помине.
Если вы предлагаете передачу объекта через аргумент функции заменить на создание еще одного объекта, значит вы плохо представляете, как и на что выделяется память. Оставьте это пока, разберитесь с зависимостями в коде.
Вообще странная вещь для разработчика описывать код словами, там все так плохо, что из кода вообще ничего не понятно?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽