The OpenNET Project / Index page

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

Релиз языка программирования PHP 7.4

28.11.2019 13:02

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

Ключевые улучшения в PHP 7.4:

  • Типизированные свойства - свойства классов теперь могут включать объявления типов, например:
    
       class User {
           public int $id;
           public string $name;
       }
    
  • Сокращённый синтаксис определения функций "fn(parameter_list) => expr" с привязкой области видимости по значению. Например, "fn($x) => $x + $y" является аналогом "$fn2 = function ($x) use ($y) {return $x + $y;}");
  • Сокращённый оператор присвоения "??=", который может использоваться для определения значения по умолчанию ("a ??= b" аналогично "a = a ?? b", если "a" определён его значение сохраняется, а если не определён присваивается значение "b");
  • Ограниченная возможность сохранения иерархии наследования типов в производных от них типах возвращаемых значений или возможность преобразования иерархии исходных типов на противоположную в производных типах аргументов (ковариантность возвращаемого типа и контравариантность типа аргументов). Теперь в PHP можно использовать следующие конструкции:
    
       class A {}
       class B extends A {}
    
       class Producer {
           public function method(): A {}
       }
       class ChildProducer extends Producer {
           public function method(): B {}
       }
    
  • Оператор распаковки внутри массивов "...$var", позволяющий выполнять подстановку существующих массивов при определении нового массива;
    
       $parts = ['apple', 'pear'];
       $fruits = ['banana', 'orange', ...$parts, 'watermelon'];
       // ['banana', 'orange', 'apple', 'pear', 'watermelon'];
    
  • Возможность наглядного оформления больших чисел с разделителями в числовых литералах (1_000_000_00);
  • Поддержка слабых ссылок, позволяющих сохранить ссылку на объект, но не блокирующих удаление связанного объекта сборщиком мусора;
  • Новый механизм сериализации объектов (комбинация Serializable и __sleep()/__wakeup()), пришедший на смену интерфейсу Serializable, который будет объявлен устаревшим;
    
       // Возвращает массив, содержащий все состояния  объекта;
       public function __serialize(): array;
    
       // Восстанавливает состояние объекта из массива
       public function __unserialize(array $data): void;
    
  • Разрешена генерация исключений из метода __toString();
  • Добавлена поддержка упреждающей загрузки кэша объектного кода. Для настройки добавлен параметр opcache.preload, через который можно указать PHP-скрипт, который будет скомпилирован и запущен при запуске сервера. Данный скрипт может загрузить опкод других файлов через их прямое включение или при помощи функции opcache_compile_file();
  • В расширение Hash добавлена функция crc32c для вычисления контрольных сумм с использованием полинома Кастаньоли;
  • В функцию password_hash() добавлена поддержка методов хэширования паролей argon2i и argin2id в реализации библиотеки Sodium, если PHP собирается без libargon;
  • Добавлена функция mb_str_split(), аналогичная str_split(), но оперирующая не байтами, а позициями символов в многобайтовой строке;
  • В функции strip_tags() добавлена возможность передачи массива с именами тегов, т.е. вместо strip_tags($str, '<a><p>') теперь можно указать strip_tags($str, ['a', 'p']);
  • В proc_open() разрешено перечисление операндов в массиве, вместо указание строки для запуска, а также реализована возможность перенаправления потоков и поддержка нулевого файлового дескриптора;
    
       proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);
    
       // Как 2>&1 в shell
       proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]],  $pipes);
    
       // как 2>/dev/null или 2>nul в shell
       proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);
    
  • Из базовой поставки исключены расширения Firebird/Interbase, Recode и WDDX. Данные расширения теперь распространяются через PECL;
  • Переведены в разряд устаревших такие возможности, как вложенные тернарные операторы без скобок, обращение к элементам массивов и строкам с использованием фигурных скобок ("$var{$idx}"), функция is_real() и приведение к типу real, использование ключевого слова parent без родительского класса, параметр конфигурации allow_url_include, применение array_key_exists() над объектами.

    Объявлены устаревшими функции get_magic_quotes_gpc(), get_magic_quotes_runtime(), hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Обеспечен вывод предупреждения о применении устаревшей возможности при попытке обработки некорректных символов в функциях base_convert(), bindec(), octdec() и hexdec(), а также при указании нестрокового шаблона в mb_ereg_replace().



 
  1. Главная ссылка к новости (https://www.php.net/archive/20...)
  2. OpenNews: Разработчики PHP предложили P++, диалект со строгой типизацией
  3. OpenNews: Проект Snuffleupagus развивает PHP-модуль для блокирования уязвимостей
  4. OpenNews: В PHP 8 будет добавлен JIT-компилятор
  5. OpenNews: Выпуск виртуальной машины HHVM 4.0 с прекращением поддержки PHP
  6. OpenNews: Релиз языка программирования PHP 7.3
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/51944-php
Ключевые слова: php
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (189) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 14:09, 28/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +3 +/
    Понимаю, что на нём уже много чего написано (что ещё нужно поддерживать), и что он довольно востребован, но... Что скажет диванный аноним: стоит ли отказаться от PHP при начале нового проекта?
     

     ....большая нить свёрнута, показать (78)

  • 1.2, Ваня (??), 14:14, 28/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +1 +/
    круто, я уже давно не пишу на php, НО это классный язык для создания WEB приложений.
     
     
  • 2.133, Попугай Кеша (?), 10:37, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • –3 +/
    > круто, я уже давно не пишу на php, НО это классный язык
    > для создания WEB приложений.

    И все же скорее нет, чем да :)

     

  • 1.6, Аноним (8), 14:18, 28/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • –1 +/
    preload это отлично, можно весь фреймворк типа laravel/symfony закэшировать
     
  • 1.16, Аноним (9), 14:37, 28/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +3 +/
    В ответ к выше скрытому комментарию AngularJS закрывается в 2021 году. https://killedbygoogle.com/
     
     
  • 2.19, Аноним (18), 14:48, 28/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +3 +/
    Хорошо-то как. В чём подвох?
     
     
  • 3.20, Алексей (??), 14:54, 28/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +4 +/
    AngularJS != Angular
     
  • 3.21, Аноним (9), 14:54, 28/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    В том что гугл скорее всего выкатит что-то новое я думаю они просто будут рекомендовать использовать Dart. Как вариант что-то полностью несовместимое с Ангуляром вплоть до смены названия, а не просто Ангуляр 2.

    И да тем кто не верит в эту ссылку можете нажать ссылку на статью от авторов Ангуляра и прочитать в ней комментарии от автора блога. Где он написал что после 2021 года поддерживайте свой Ангуляр сами.

    Пока что ни один человек кому бы я не послал эту ссылку не поверил что это правда...

     
     
  • 4.23, Антон (??), 15:02, 28/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    ну как бы под Angular можно писать на Dart, но этим редко кто пользуется.
    AngularJS фактически мертв уже года два, до 2021 они правят в нем баги. Не вижу тут ничего страшного, наоборот, удивлен что он еще поддерживается.
     
  • 4.27, Алексей (??), 15:12, 28/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > И да тем кто не верит в эту ссылку можете нажать ссылку на статью от авторов Ангуляра и прочитать в ней комментарии от автора блога. Где он написал что после 2021 года поддерживайте свой Ангуляр сами.

    И приглашает присоединиться к Ангуляру:
    We look forward to joining you on the next exciting part of our journey together on the Angular platform.

     
     
  • 5.35, Аноним (37), 15:38, 28/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Dart и TS версии вроде еще будут поддерживаться.
     
  • 3.22, Аноним (9), 14:59, 28/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Вот как вариант https://angulardart.dev/version и версия только на TS видимо останутся.
     
  • 2.53, Анони (?), 17:03, 28/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +2 +/
    Хорошо, что 5 лет назад я решил его не изучать, т.к. примеры туториалов не работали на свежих версиях.
     
     
  • 3.63, Попугай Кеша (?), 17:39, 28/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • –2 +/
    > Хорошо, что 5 лет назад я решил его не изучать, т.к. примеры
    > туториалов не работали на свежих версиях.

    Используйте React ;)

     

  • 1.45, Аноним (39), 16:15, 28/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    > свойства классов теперь могут включать объявления типов

    Начали прозревать?
    > Оператор распаковки внутри массивов "...$var", позволяющий выполнять подстановку существующих массивов при определении нового массива

    Не имея намерения уязвить - а разве в php не было функции типа
    flatten([1,2,[3,4],5,6]) -> [1,2,3,4,5,6]
    (просто лень лезть на php.net и искать в доках, было оно там или нет)
    > Добавлена функция mb_str_split(), аналогичная str_split(), но оперирующая не байтами а позициями символов в многобайтовой строке

    Ээээ... А разве такая функция не должна изначально быть в любом языке, претендующем на поддержкув UTF8?

     

     ....большая нить свёрнута, показать (31)

  • 1.54, Анони (?), 17:05, 28/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +1 +/
    Было бы интересно статистику предпочтений реальных разработчиков видеть, а не комменты непричастных. Ах да, они же на работе сейчас.
     
     
  • 2.57, пох. (?), 17:09, 28/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    предпочтения - они точно так же от непричастных - даже если они сейчас и на работе, и во всю пыхтят над своим пехепе 5.2 прожектом - предпочитая, разумеется, erlang. Но надсмотрщик с кнутом не позволяет им отвлекаться.

     
     
  • 3.64, Попугай Кеша (?), 17:40, 28/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    > предпочтения - они точно так же от непричастных - даже если они
    > сейчас и на работе, и во всю пыхтят над своим пехепе
    > 5.2 прожектом - предпочитая, разумеется, erlang. Но надсмотрщик с кнутом не
    > позволяет им отвлекаться.

    Ха-ха ) Близко )

     
  • 3.81, конь в пальто (?), 19:05, 28/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    вот признайся, что ты давно на пхп не пишешь, а может быть даже никогда на нем и не писал ничего?
    который раз замечаю, что о пхп у тебя очень дилетантские представления.
     
  • 3.145, Aqueelone (?), 13:46, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    А я то думаю -- что Erlang (не Elexir) делает в Laravel...

    Это из серии -- как вынести мозг индусам? Довавить Clojure-loop в Java класс и пусть ломают голову как оно работает! :)  

     
     
  • 4.147, Попугай Кеша (?), 15:12, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > А я то думаю -- что Erlang (не Elexir) делает в Laravel...
    > Это из серии -- как вынести мозг индусам? Довавить Clojure-loop в Java
    > класс и пусть ломают голову как оно работает! :)

    Индусы захватили Мелкософт. Им там веселее. С C# балуются.

    Clojure не трогать! Любимый язык!

     
  • 2.105, SubGun (ok), 23:35, 28/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • –1 +/
    Какую статистику? Админов локалхоста?
    Разработчики могут предпочитать просмотр порно чтению мануалов, но руководство компании не позволит смотреть порно на работе.
     
     
  • 3.128, пох. (?), 10:24, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    ну это у вас какое-то очень жестокое руководство. Обычно порно, если не сильно палиться, все же можно.
    А вот "корпоративный стандарт разработки у нас- php 7.3 - и с вашими идеями, что хорошо бы нам все переписать на прекрасном игого - вооон туда, в отдел кадров и к левому столику - там увольнениями занимаются. Или эти двенадцать тасков БУДУТ закрыты до конца дня, и пройдут ревью!"
     
     
  • 4.150, Попугай Кеша (?), 17:30, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > ну это у вас какое-то очень жестокое руководство. Обычно порно, если не
    > сильно палиться, все же можно.
    > А вот "корпоративный стандарт разработки у нас- php 7.3 - и с
    > вашими идеями, что хорошо бы нам все переписать на прекрасном игого
    > - вооон туда, в отдел кадров и к левому столику -
    > там увольнениями занимаются. Или эти двенадцать тасков БУДУТ закрыты до конца
    > дня, и пройдут ревью!"

    Ух ты ж бл. Это ад для разработчиков?

     
     
  • 5.190, пох. (?), 17:24, 02/12/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    это рай. Ад там же, но системным администратором.

     
     
  • 6.206, Попугай Кеша (?), 10:31, 10/12/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > это рай. Ад там же, но системным администратором.

    Для садо-мазо?

     

  • 1.94, Аноним (95), 20:47, 28/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –3 +/
    самый важный язык на всем свете. долгих лет.

    ЗЫ Круче только ЯваСкрипт

     
     
  • 2.100, Аноним (100), 22:20, 28/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +3 +/
    Ты тоже программируешь на HTML?
     
  • 2.109, Wfhm (?), 01:03, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    А .bat скрипты еще круче явы!
     
     
  • 3.117, Аноним (117), 04:56, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Да!!!
     

  • 1.107, Прикроватный Аноним (?), 00:41, 29/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +1 +/
    Херня в том, что PHP сейчас модно ругать, но альтернатив ему особенно и нет. Руби сдулся так толком и не взлетев. Питон - возможно в каких-то местах и неплох, но и не так уж и хорош, чтобы можно было однозначно выбирать его. Джанго - на фоне Симфони и Ларавеля смотрится не так уж убедительно, как и сам Питон на фоне ПХП. Особенно доставляют ПРИНЦИПЫ.. или как их там, которые декларируются Питоном как ключевые..  типа явное лучше неявно, хорошее лучше плохого.. и прочий бред, на которые, впрочем, также повсеместно кладут. ПХП - язык не обремененный идеалогией, пилящийся  практиками, по возможности и по необходимости. Да, есть и недостатки, но на практике (веб-формошлепство) они не так уж мешают, а рывок, который начался с 7-ки - просто сказка какая-то..  Проблема ПХП, имхо не в языке, а в том что есть куча легаси - того же вордпресса и прочих поделок...  типа битрикса, которые по хорошему надо бы похоронить, но никто этого делать не собирается,  ибо обратная совместимость. и куча инсталяций(потраченного бабла).  Вот одновременно и существует 2 параллельных мира ПХП..   вордпресс и битрикс.. и  всякое модное-молодежное симфони, ларавель..  
     
     
  • 2.110, Anonymoustus (ok), 01:08, 29/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > PHP сейчас модно ругать, но альтернатив ему особенно и нет.

    Естественно, нету. И я могу одним предложением объяснить — почему: благодаря возможности произвольно смешивать HTML-разметку и код PHP. Гениальнейшая идея! Жаль, что реализация самого ЯП не ахти.


    ЗЫ

    Кстати, сами пыхтачки не всегда осознают, что любят Пых именно за это. :) Если бы этой особенности в Пыхе не было, его бы самого давно уже не было.

     
     
  • 3.120, Прикроватный Аноним (?), 07:30, 29/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +1 +/
    > благодаря возможности произвольно смешивать HTML-разметку и код PHP

    Будто в этом есть что-то плохое...  Посмотрите внимательно на C# .net core и др. - эту фичу уже много лет пытаются скопировать многие "крутые" языки.

    Что касается перка "говнокод"  - для него наличие ПХП вовсе не обязательно, да и наличие возможности что-то с чем-то смешивать тоже.

     
     
  • 4.159, Anonymoustus (ok), 00:31, 30/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >> благодаря возможности произвольно смешивать HTML-разметку и код PHP
    > Будто в этом есть что-то плохое...  Посмотрите внимательно на C# .net
    > core и др. - эту фичу уже много лет пытаются скопировать
    > многие "крутые" языки.

    Я же не говорю, что плохое. Наоборот же пишу: гениальное изобретение. Но только для крепких духом и мозгом. В кривых же руках открывает прямую дорогу к гновнокоду.

    > Что касается перка "говнокод"  - для него наличие ПХП вовсе не
    > обязательно, да и наличие возможности что-то с чем-то смешивать тоже.

    Целиком и полностью согласен.

     
  • 3.144, anomin (?), 13:25, 29/11/2019 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +/
    razor blazor ?
     
     
  • 4.151, Попугай Кеша (?), 17:31, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > razor blazor ?

    Ага, он. Но помню 10 лет назад я на Razor что-то писал. Теперь вот Blazor появился.

     
  • 3.156, Анонимос (?), 19:13, 29/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Другими словами, что такое разработка на пхп сегодня, тебе абсолютно неизвестно)
     
  • 3.157, Иваныч (??), 00:18, 30/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    ASP, когда-то баловался ради лулзов таким на VBScript/JScript с ODBC в начале-середине нулевых. Только хорошего тут что?
     
     
  • 4.158, Anonymoustus (ok), 00:27, 30/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Хорошего — удобство. Учитывая, особенно, что для большинства, увы, оказалось совершенно не по силам освоить XML, XSLT и производные средства, задуманные для собственно развития Веба.
     
     
  • 5.168, Аноним (168), 13:13, 30/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Есть нюанс. XSLT — Turing-complete, так что это сорта уровня JS.
     
     
  • 6.170, Anonymoustus (ok), 15:04, 30/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    171 XSL, 8212 как бы говорит нам Консорциум, 8212 is a family of recomme... большой текст свёрнут, показать
     
  • 5.171, Иваныч (??), 16:21, 30/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    XHTML/XML/XSLT - вещи весьма полезные без сомнения, но что было в ASP & PHP начала 2000-х было не очень. На каждый чих открывать соединения, логика с форматированием смешанные и прочее, хотя это может всего лишь был опыт ковыряния в легаси, кошмарная вещь. А шаблоны и в NodeJS есть для любителей этого дела: https://expressjs.com/en/resources/template-engines.html

    Многие выглядят более адекватно, да и для любителей есть это дело и в других языках - C, C++, D, Java, Go, ... Сотни их.

     
  • 2.122, suffix (ok), 09:56, 29/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    на php 7.4 Bitrix тупо не заведётся :(
     
     
  • 3.126, пох. (?), 10:18, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    подождите недельку - починют.

    А обратной совместимости там, если кто не в курсе, и не было никогда.
    Раз в пол-года очередное обновление стабильненько ломает все что понагуанокодили вручную.

    Ну и что, вы же за лицензию уже заплатили? Теперь заплатите "разработчику на битриксе", он поправит.

     
     
  • 4.127, suffix (ok), 10:22, 29/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    У меня нет проблем - я же не идиот всё сразу в прод тащить :)

    Есть надежда что может быть именно в моём случае вообще гладко будет (у меня сайт на windows-1251) - а у Битрикса и нового php 7.4 на сайтах с utf-8 проблемы ожидаются.

     
     
  • 5.129, пох. (?), 10:28, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    Удобно, чо.

    (к счастью, у меня тоже 1251, но вот думать в какие моральные и денежные потери обойдется апгрейд - не хочется вообще. Хочется нечаянно снести все это нахрен, и посадить цветочки.)


     
  • 4.160, Anonymoustus (ok), 00:34, 30/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > подождите недельку - починют.
    > А обратной совместимости там, если кто не в курсе, и не было
    > никогда.
    > Раз в пол-года очередное обновление стабильненько ломает все что понагуанокодили вручную.

    Меня, кстати, с давних пор интересует ответ на вопрос: а хостеры как поступают в плане обратной совместимости? Держат несколько версий Пыха для клиентов, латая по мере нахождения дыр, пока последний солидный господин не откажется от окаменевшей версии сабжа?

     
     
  • 5.176, пох. (?), 20:13, 30/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Держат несколько версий Пыха для клиентов

    да.

    > латая по мере нахождения дыр

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

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


     

  • 1.108, Аноним (108), 00:56, 29/11/2019 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/
     

  • 1.121, ДмитрийСССР (?), 09:29, 29/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    Когда уже ребята из PHP сделают возможность строго указывать типа элементов массива который передают/получают, чтобы было что-то вроде

    > function show (array<int> $data);

    и

    > function show (array<ClassName> $data);

    очень подобного не хватает из коробки

     
     
  • 2.123, Аноним (123), 10:00, 29/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +2 +/
    Разработчики пхп писали об этом, потеря в производительности пока не позволяет сделать такие тайпхинты.
     
     
  • 3.134, ДмитрийСССР (?), 10:49, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Спасибо :)
     
  • 2.137, Аноним (137), 12:23, 29/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Копировать иероглифический синтаксис из плюсов идея чреватая.
     
  • 2.148, thevoan (ok), 15:59, 29/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Создайте класс BlablaCollection, который будет содержать массив только определенного типа, сделайте этот класс коллекцию итерируемой и передавайте это в нужную функцию

    function show (BlablaCollection $data);

     
     
  • 3.153, KonstantinB (ok), 18:17, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Тут проблема в том, что либо придется копипастить кучу кода, либо терять типизацию в абстрактном классе с реализацией базовых методов типа map() или sort().
     
     
  • 4.155, thevoan (ok), 19:11, 29/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Мир не идеален =)

    На текущий момент, на мой взгляд, лучше
    копипастить/кодогенерировать, чем
    ориентироваться на array.

    Еще можно взглянуть на:
    - hack lang (там есть генерики, и вроде бы,
      можно массивы делать типизированные).
    - java :)

     
  • 2.152, KonstantinB (ok), 18:15, 29/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Если кастомные дженерики типа MyCollection<T> еще сделать можно (хотя тоже придется кучу кода перепахать), в случае с array это нереально. Ну то есть переписать придется вообще примерно все.
     
  • 2.163, anonymous (??), 04:56, 30/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Это есть в Hack.
     

  • 1.143, Андрей (??), 13:21, 29/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • –1 +/
    Лучший язык для веба.
    Знак $ не хотят убрать?
     
  • 1.149, Аноним (149), 16:52, 29/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    Те кто говорит что PHP какой-то не такой, просто имеет мало опыта в программиров... большой текст свёрнут, показать
     
     
  • 2.161, Anonymoustus (ok), 00:37, 30/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    https://cmsmagazine.ru/journal/items-the-perfect-paragraph/


    Не благодари. Совершенствуйся. Однажды люди начнут читать твои посты и комментарии.

     
  • 2.175, Михрютка (ok), 20:13, 30/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    четырнадцать томов "В поисках утраченного времени" этому господину!
     

  • 1.165, Аноним (165), 10:28, 30/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +1 +/
    PHP все круче.
     
  • 1.172, Ilya Indigo (ok), 16:38, 30/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    Эх, ну никак не могут без приключений.
    https://bugs.php.net/bug.php?id=78892 (заблокировано хрен в рот позором, юзайте прокси)
     
     
  • 2.173, KonstantinB (ok), 19:30, 30/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    А при чем тут PHP вообще? Это мейнтенеры в systemd-сервисе не проставили нужные capabilities.
     
     
  • 3.174, Ilya Indigo (ok), 19:49, 30/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    FPM - это часть PHP.
    systemd-unit файл поставляется апстримом, а не меинтайнерами даунстрима.
    7.3.11 прекрасно работал, там они, видимо, были.
    Так что это косяк PHP.
     
     
  • 4.177, пох. (?), 20:16, 30/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > 7.3.11 прекрасно работал, там они, видимо, были.

    там их видимо, как раз и не было. А тут решили всем сделать щастья. Получилось как обычно.
    > Так что это косяк PHP.

    видимо, у разработчиков не systemd/linux (хм, десяточка?)

     
     
  • 5.180, Аноним (8), 22:46, 30/11/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    У подавляющего большинства разработчиков Линукс. Но при разработке и тестировании все запускается вручную, разумеется.
     
  • 4.179, Аноним (8), 22:42, 30/11/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Действительно, в репозиторий положили.

    Такое бывает, кто-то прислал юнит, его в репозиторий положили (почему бы и нет), а при релизе 7.4 никто не проверил.

    Впрочем, в репозитории только пример, проверять работоспособность пакета - задача мейнтенера.

     
     
  • 5.183, Ilya Indigo (ok), 12:52, 01/12/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А самое главное от чего у меня волосы дыбом встают, это то что мне отвечают меинтайнеры PHP в openSUSE https://build.opensuse.org/request/show/751575#comments
    Я что серьёзно САМ должен править systemd-unit файл при изменении конфигурационного файла php-fpm?
    И это не является ошибкой, а обычный нормальный процесс настройки?
     
     
  • 6.186, Аноним (8), 17:48, 01/12/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    По вашей ссылке все сломалось и отдается 500, но вообще такие случаи, когда надо править юнит, это норма в системд.
     
     
  • 7.187, Ilya Indigo (ok), 18:04, 01/12/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Это не ссылка сломалась, это OBS на апаче периодически... это нормально для неё.

    Одно дело, когда я хочу изменить порядок или условие загрузки юнита, это нормально.
    Но если я хочу вместо 127.0.0.0:9000 (оффтопик едишн конфиг) использовать нормальный юниксовый сокет, с выставлением владельца (nginx:nginx) и режима для него (0600) я должен САМ также позаботится, что в CapabilityBoundingSet присутствовали все CAP_CHOWN CAP_SETGID CAP_SETUID?
    А просто добавить туда CAP_CHOWN, они не хотят это угроза безопасности, лишняя привелегия которая не нужна на дефолтном конфиге...

    https://build.opensuse.org/package/show/home:13ilya/php7
    Короче я просто создал в домашнем репозитории свой php со своими нужными мне дефолтными настройками (который при этом будет обновляться от родительского и автоматически патчится моими настройками) и пусть идут лесом со своим дефолтом.

    Проблема в том, что если так начнут делать и остальные, то у OBS ресурсов на всех не хватит каждый такой зоопарк обслуживать.

     
  • 6.192, пох. (?), 17:31, 02/12/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > Я что серьёзно САМ должен править systemd-unit файл при изменении
    > конфигурационного файла php-fpm?

    да, сюрприз!

    Мы заботимся о вашей безопастносте, и запретили fpm менять владельца собственного сокета.

    > И это не является ошибкой

    ЭТО является системным менеджером.

     
  • 2.205, Ilya Indigo (ok), 17:27, 05/12/2019 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    На этом мои страдания не заканчиваются...
    https://bugs.php.net/bug.php?id=78916
    Ещё и отправка почты отвалилась. :-(
     

  • 1.178, Аноним (178), 21:09, 30/11/2019 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –1 +/
    лучше бы нормальный debugger запилили
     
     
  • 2.204, Аноним (165), 15:57, 04/12/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Пиши сразу правильно
     

  • 1.182, InuYasha (?), 12:22, 01/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • –1 +/
    >>Сокращённый оператор присвоения "??="

    Типичное говноедство от PHP во все времена: давайте на каждую стандартную понятную конструкцию напишем новый "оператор" из трёх закорючек! *лицо-ладонь*

     
     
  • 2.197, Michael Shigorin (ok), 18:43, 02/12/2019 [^] [^^] [^^^] [ответить]      [к модератору]
  • –1 +/
    "Зато не перл!"
     

  • 1.185, Онаним (?), 13:22, 01/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    >>> Переведены в разряд устаревших такие возможности, как вложенные тернарные операторы без скобок

    Говнокодерам, забивающимся на плохо документированное поведение оператора, снова привет. Сколько раз говорилось: скобки лишними не бывают.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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