Здравствуйте!. Будет ли правильно передавать параметры в static method? Или это не желательно? Пример кода: PHP: class Output { private $header = array(); public static function set_head( $header ) { } public static function get_head() { } } Несколько дней назад мне сделали замечания, что передавать параметры в метод нельзя, если он статик и вот я не много, не могу понять... В laravel так делают и примеров в интернете хватает тоже, может просто я кое что упустил и не совсем понял...
Или вам сказали хрень, или вы неправильно поняли. Касательно вашего наброска - поле header у вас не static, поэтому из статического метода его поменять не выйдет, имейте в виду.
1. В Laravel все static-вызовы - это фасад для доступа к тем или иным объектам находящимся в контейнере. 2. Главная проблема static, singleton и прочих реинкарнаций god object в том, что они накапливают в себе сайд-эффекты. Другими словами, вы не можете рядом держать ещё один экземпляр такого объекта, потому что у вас нет точки контроля над происходящими с ними изменениями в коде. К примеру в том же Laravel, нельзя в Application просто так передать новый Request, т.к. в некоторых местах остаются старые данные, которые фреймворк будет использовать при новом запросе. Вам придется принудительно очистить эти места вручную. Такой механизм реализован в laravel-swoole, где однажды созданный $app обрабатывает множество запросов от сервера, и если к примеру между вызовами не сбросить AuthService, то возможна ситуация, когда пользователь получит доступ к данным другого, пришедшего ранее пользователя. Такой вот внезапный говнокод )) 3. Передаете вы параметры или нет в static method - не важно, главное что вы потом с этими данными делаете. Если метод хм... чистый - передавайте что угодно, если нет - ваш код пахнет ))
не то чтоб мы тут прям лысого гоняем на рейтинг, но "палец вверх" будет неплохим выражением благодарности автору)))