The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Что означает этот код на php?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (PHP)
Изначальное сообщение [ Отслеживать ]

"Что означает этот код на php?"  +1 +/
Сообщение от Крол (?), 12-Окт-20, 17:59 
Товарищи, объясните пожалуйста что делает этот код:
=======================================================
Class XXX {
    public static function create(
        ?ResponseFactoryInterface $responseFactory = null,
        ?ContainerInterface $container = null,
        ?CallableResolverInterface $callableResolver = null,
        ?RouteCollectorInterface $routeCollector = null,
        ?RouteResolverInterface $routeResolver = null,
        ?MiddlewareDispatcherInterface $middlewareDispatcher = null
    ): App {
        static::$responseFactory = $responseFactory ?? static::$responseFactory;
        return new App(
            self::determineResponseFactory(),
            $container ?? static::$container,
            $callableResolver ?? static::$callableResolver,
            $routeCollector ?? static::$routeCollector,
            $routeResolver ?? static::$routeResolver,
            $middlewareDispatcher ?? static::$middlewareDispatcher
        );
    }
}

XXX::create();

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Что означает этот код на php?"  +/
Сообщение от Аноним (1), 12-Окт-20, 18:31 
Означает, что программист задрачивал паттерны.
Ответить | Правка | Наверх | Cообщить модератору

2. "Что означает этот код на php?"  +/
Сообщение от Аноним (2), 12-Окт-20, 20:02 
> Означает, что программист задрачивал паттерны.

Ну это и ежу наверное понятно. А что за вопросы такие ??

Ответить | Правка | Наверх | Cообщить модератору

3. "Что означает этот код на php?"  +/
Сообщение от Аноним (3), 12-Окт-20, 22:25 
какие из вопросов вызывают вопросы? Те которые одинарные для передачи null после указания типа или те, которые двойные, для проверки на null и подстановки значения?
Ответить | Правка | Наверх | Cообщить модератору

4. "Что означает этот код на php?"  +/
Сообщение от Крол (?), 13-Окт-20, 08:19 
> какие из вопросов вызывают вопросы? Те которые одинарные для передачи null после
> указания типа или те, которые двойные, для проверки на null и
> подстановки значения?

Нет, про знаки вопроса всё понятно. Вот сама конструкция
public static function create(АРГУМЕНТЫ): App {
        static::$responseFactory = $responseFactory ?? static::$responseFactory;
        return new App(
            self::determineResponseFactory(),
            $container ?? static::$container,
            $callableResolver ?? static::$callableResolver,
            $routeCollector ?? static::$routeCollector,
            $routeResolver ?? static::$routeResolver,
            $middlewareDispatcher ?? static::$middlewareDispatcher
        );
    }

Вот это что такое. Т.е. есть метод create() и после него описана какая-то шняга после двоеточия. Как структура App - что это значит?

И ещё в этой структуре описаны поля сразу и из этой структуры есть return который возвращает сам экземпляр этой структуры App и в аргументах для структуры App в структуре для метода create - как один из аргументов - self::determineResponseFactory(),

Что это всё значит?

Ответить | Правка | Наверх | Cообщить модератору

5. "Что означает этот код на php?"  +1 +/
Сообщение от Аноним (5), 13-Окт-20, 10:11 
не, я чет туго соображаю и смысл вопроса от меня ускользает.

После двоеточия идет указание типа возвращаемого из функции объекта "App" и дальше тело метода. Что значит App как структура я без понятия, т.к. этот класс здесь не приведен и можно предполагать только по названию.
Там нет описания полей, там есть инициализация объекта App в конструктор которого передаются либо аргументы функции create, либо значения по умолчанию если переданные аргументы равны null

Ответить | Правка | Наверх | Cообщить модератору

6. "Что означает этот код на php?"  +/
Сообщение от Крол (?), 13-Окт-20, 16:33 
> не, я чет туго соображаю и смысл вопроса от меня ускользает.
> После двоеточия идет указание типа возвращаемого из функции объекта "App" и дальше
> тело метода. Что значит App как структура я без понятия, т.к.
> этот класс здесь не приведен и можно предполагать только по названию.
> Там нет описания полей, там есть инициализация объекта App в конструктор которого
> передаются либо аргументы функции create, либо значения по умолчанию если переданные
> аргументы равны null

Всё понял. Т.е. это значит, что результат выполнения метода create - должен быть объект класса App. И дальше в теле метода как раз сразу и возвращаем экземляр этого класса.

Бухой вчера был.

А вообще так писать - это нормальная практика? Я про себя просто думаю, код на php я пишу так сказать наедине с собой, не в команде. Вроде код у меня и документированый, и написан вполне себе грамотно и с ООП в разумных пределах. И именование переменных и файлов с классами/функциями, но вот в моём коде всё как-то понятно сразу что делается. А тут хер проссышь, что происходит.

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

Ответить | Правка | Наверх | Cообщить модератору

7. "Что означает этот код на php?"  +1 +/
Сообщение от Аноним (5), 13-Окт-20, 17:24 
> А вообще так писать - это нормальная практика?

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

> без понимания такого кода на лету, думать о вступлении в какую-то команду разработки - бессмысленно?

у нас код на скриптовых языках и есть как минимум 2 проблемы:
1. код написан так (особенно старый, с новым особо не доводилось работать), что понимание подобных конструкций тебе мало поможет
2. некоторые товарищи так стремятся использовать синтаксический сахар и особенности синтаксиса, что на выходе получается код со случайным выполнением некоторых функций

Ответить | Правка | Наверх | Cообщить модератору

8. "Что означает этот код на php?"  +/
Сообщение от Аноним (1), 14-Окт-20, 12:09 
>А тут хер проссышь, что происходит.

Именно.

> Я правильно понимаю, что без понимания такого кода на лету, думать о
> вступлении в какую-то команду разработки - бессмысленно?

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

Это типичный write-only, который один раз пишется и потом в него никто не лезет. Этот код практически ничего не делает - чего в него лезть?
Реальный код в другом месте и там уже старые добрые толстые контроллеры, внутри которых копипастные велосипеды. Но в точке входа у нас А - Архитектура, использование новейших возможностей языка. Значит код не говнокод, сениор не макака, а Программист, так-то.

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

Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

9. "Что означает этот код на php?"  +/
Сообщение от Аноним (-), 14-Окт-20, 20:32 

> Это типичный write-only, который один раз пишется и потом в него никто

Та сфига ли, типичнейший фактори в кложуре . Вот вопросы эти что означали было не понятно, спасибо что объяснили выше что это новомодное исключение ,уже в коллекции синтаксисов будет четвертым или даже пятым вариантом от "новомодников".

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру