Comments 39
Давно PSR стали стандартом?С момента появления.
Скорей всего вы не правильно трактуете термин «стандарт». Стандарт это нормативный документ или свод правил. PSR как раз этим и является. В общем случае стандарт не является чем-то обязательным к исполнению. Любой желающий может написать свой стандарт. Можете создать проект на ГитХабе, написать свои правила для чего-либо и назвать это стандартом. Это будет абсолютно законно.
Вот трактовка у вас точно такая же, как и у меня, а понимаем по разному. Разве может быть 2 стандарта "метра", "килограмма"? Нет, т.к. иначе ни один из них нельзя назвать стандартом, верно?
По идее да, например Английская система мер и метрическая система мер.
Разве может быть 2 стандарта «метра», «килограмма»Метры и килограммы являются часть системы единиц СИ. Никто не мешает вам создать свою единицу измерения (стандарт) и определить своё толкование метра и килограмма.
Другое дело, как сделать свой стандарт «официальным». Т.е. чтобы он стал применятся организациями или даже государствами.
По вашей логике получается, что если кто-то назовет python стандартом для php — это тоже будет «стандарт»?Именно так. Стандарт вполне может быть абсурдным.
А psr, в моем понимании, рекомендация — не видел еще ни одного проекта, который был-бы реализован без нарушений этих рекомендаций.
Спасибо за описание.
Странно, что автозагрузку классов по PSR-4 не добавили в сам PHP, чтобы не нужно было для каждого файла запускать код на PHP. В PHP автозагрузка есть, но вся проблема в том, что папки с именами пространств имён и файлы с классами должны быть преобразованы к нижнему регистру.
Если кратко, то чтобы включить автозагрузку в PHP нужно выполнить 3 шага:
- добавить папку с классами в include_path;
- указать окончание для файлов с классами (например, .php или .class.php);
- зарегистрировать автозагрузчик.
set_include_path(get_include_path().':'.__DIR__.'/../classes/');
spl_autoload_extensions('.php');
spl_autoload_register();
После этого все классы из всех пространств имён начинают "магическим образом" подгружаться.
Я когда-то давно наступал на посты о том, что разработки PHP крайне аккуратно подходят к фичам, которые ломают обратную совместимость. А такое решение бы похоронило тонны легаси.
А зачем менять дефотное поведение? Просто добавить возможность загружать из папок так, как требует PSR-4.
PSR-4 немного противоречит логике языка, поэтому вряд ли будет в него когда-либо включен. В PHP имена классов регистронезависимые, а автозагрузка по PSR регистрозависимая на регистрозависимых файловых системах
папки с именами пространств имён и файлы с классами должны быть преобразованы к нижнему регистру
оно же не просто так
Сам подход хорош и должен развиваться. Если стандарт охватит большинство типовых конструкций и идиом, это может улучшить качество кодовой базы по языку в целом, избавив проекты новичков от особенно лютых костылей. Другое дело, что это немного дизмотивирует разработку своих велосипедов, что в 0.1% случаев может приводить к появлению лучшего способа запилить фичу.
Исправить надо, namespace появились с 5.4
(PHP 5 >= 5.3.0, PHP 7)
занимаясь срачем вместо помощи обществу.Собственно PHP-FIG и представляет сообщество через его представителей от различных PHP фреймворков и CMS. Срач это вполне привычное явление при обсуждения холиварных вопросов. Мнений много, а результат должен быть один. Несогласные уходят.
twitter.com/fabpot/status/1064946913596895232
Изучите почему симфони и доктрина покинули группу.
Можно для тех кто из леса, вкратце объяснить?
Подробнее: medium.com/@tdutrion/symfony-and-psr-14-event-dispatcher-f5a9db6740e7
Если в 2 словах, то релиз стандарта попал под LTS версию симфони, которая должна была еще н-время поддерживать php5.6. А данный стандарт использовал тип данных object и ограничивал использование версий php 7.0+.
Я не совсем понимаю почему из-за этого нужно было покидать PHP-FIG, так-как на сегодняшний день компоненты симфони поддерживают PSR и PSR-14 тоже доехал.
Даже не раздуты, а их нельзя было реализовать в актуальных на тот момент компонентах (symfony/http-foundation
, doctrine/cache
etc), т.е. это никак не interoperability group.
Вот тут выжимка: https://hub.packtpub.com/symfony-leaves-php-fig-the-framework-interoperability-group/
С выходом php7 большую часть кода и стандарта можно упростить, например через type hint
Реализовывал psr-16 кэшер файлов
Вот там описание гласит, например аргумент должен быть массив или DateTime, значит надо реализовать проверку, в php7 можно указать тип
Есть даже заготовки в виде утилит, но для кэша пустой ( https://github.com/php-fig/simplecache-util) пришлось чуть подсмотреть в заготовки psr-6 ( https://github.com/php-fig/cache-util )
$this->CI->load->helper('captcha');
$this->CI->load->helper('cookie');
$this->CI->load->helper('email');
Напишите в комментариях, если узнали где использовался данный подход
Очень похоже на service locator'ы в СodeIgniter. По тем временам, было очень удобно на нем писать, да и альтернатив особо не было.
PHP развивается, набирает все большую популярность...
Статистика, к сожалению, говорит об обратном:
Разработчики PHP весьма оживились, за последние несколько лет были серьезные прогрессы в производительности, новые фичи, RFC и тп. Технология активно развивается (ждем PHP 8).
Что касается рейтинга: www.tiobe.com/tiobe-index
Мне кажется, это не совсем тот рейтинг, который стоит воспринимать, как показатель жизнеспособности языка(технологии).
Так-как многие инструменты заточены под конкретные ниши и сравнивать их в общем я бы не стал. Например в этот рейтинг на 20 позицию попал Scratch.
PHP достаточно давно и стабильно занял свою нишу и пока все идет хорошо.
Тут ещё надо различать абсолютную и относительную популярность. Первая может расти одновременно с падением второй. Грубо говоря, сообщество использующих PHP увеличивается каждый год на 100 000 человек (с учётом переставших использовать), а вообще сообщество использующих разные ЯП растёт быстрее, в результате чего доля PHP падает.
Например в этот рейтинг на 20 позицию попал Scratch.
Это достаточно популярный язык для обучения детей программированию. У коллеги сын ходит на курсы по робототехнике, там его используют для программирования роботов.
PSR Стандарты