The OpenNET Project / Index page

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

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

28.08.2014 21:32

Представлен новый значительный релиз языка программирования PHP 5.6.0. В версии PHP 5.6.0 добавлены константные скалярные выражения, функции с переменным числом аргументов, импорт функций и констант при помощи оператора use, оператор возведения в степень, интерактивный отладчик phpdbg. Следующим шагом развития языка PHP станет воплощение идей по существенному увеличению производительности движка Zend Engine и изменению методов работы с памятью, развиваемых в рамках экспериментальной ветки PHPNG.

Ключевые новшества:

  • Константные скалярные выражения (constant scalar expressions), допускающие применение операций над числовыми или строковыми литералами и константами в контексте, предусмотренном для статических значений, таком как определение констант или значений по умолчанию аргументов функций. Например, "const ONE = 1; const TWO = ONE + 1;"
  • Функции с переменным числом аргументов (Variadic function), при определении которых явно не указывается число передаваемых аргументов. Например, функцию "function f($req, $opt = null, ...$params)" можно вызывать как f(1, 2), f(1, 2, 3, 4, 5) и т.п., где $req является обязательным аргументом, $opt - опциональным, а все дополнительные аргументы передаются в форме массива $params.
  • Распаковка массивов или перечисляемых объектов в вид набора аргументов при вызове функции, используя оператор "...". Например, "$operators = [2, 3]; echo add(1, ...$operators);", где add является функцией трёх аргументов;
  • Возможность использования оператора use для импорта функций и констант, в дополнение к импорту классов. Например, "namespace { use function Name\\Space\\f;...." для импорта в текущее пространство имён функции f, определённой в пространстве имён Name\\Space;
  • Новый интерактивный отладчик phpdbg, выполненный в форме модуля SAPI;
  • Возможность повторного использования ввода php://input, который теперь может быть переоткрыт и прочитан более одного раза. Изменение также привело к значительному сокращению потребления памяти при обработке данных, переданных через метод POST. Переменная $HTTP_RAW_POST_DATA причислена к устаревшим возможностям;
  • Для объектов GMP обеспечена возможность перегрузки оператора и приведения скалярных типов;
  • Поддержка загрузки файлов размером больше 2GiB;
  • Добавлен новый математический оператор "**", применяемый для возведения в степень. Например, "$a ** $b" - возвести $a в степень $b;
  • Улучшение поддержки SSL/TLS. В частности, в расширении OpenSSL добавлена возможность извлечения и проверки подписи (fingerprint) сертификатов. Для извлечения подписи из сертификатов X.509 добавлена функция openssl_x509_fingerprint(). Для SSL-потоков добавлены две контекстные опции: capture_peer_cert для захвата сертификата X.509 и peer_fingerprint для проверки его соответствия заданной подписи. Кроме того, добавлена поддержка выбора криптографических методов, таких как SSLv3 и TLS, через установку контекстной опции crypto_method, поддерживающей значения STREAM_CRYPTO_METHOD_SSLv2_CLIENT, STREAM_CRYPTO_METHOD_SSLv3_CLIENT, STREAM_CRYPTO_METHOD_SSLv23_CLIENT (по умолчанию) и STREAM_CRYPTO_METHOD_TLS_CLIENT;
  • Поддержка алгоритма хэширования gost-crypto;
  • Добавлен новый скрытый метод __debugInfo(), предоставляющий дополнительную отладочную информацию для объекта;
  • В FPM SAPI реализована опция конфигурации clear_env для очистки переменных окружения;
  • Новые функции hash_equals() и opcache_is_script_cached();
  • Упрощена обработка кодировки на выходе через использование в качестве кодировки по умолчанию значения default_charset;
  • В расширение mysqlnd добавлен новый метод извлечения данных, примечательный меньшим потреблением памяти за счёт большего числа операций копирования блоков памяти;
  • В расширение PCRE добавлена поддержка маркеров;
  • В расширение Pgsql добавлена поддержка выполнения запросов и соединений в асинхронном режиме;
  • Изменения, нарушающие совместимость:
    • Ключи массива не могут быть перезаписаны при определении массива в качестве свойства класса с использованием литерала array;
    • Обеспечена более строгая проверка синтаксиса JSON в функции json_decode();
    • Обвязки для потоков теперь по умолчанию выполняют верификацию сертификата и имени хоста пира при использовании SSL/TLS;
    • Все ресурсы GMP теперь являются объектами;
    • Расширение mcrypt теперь требует указания корректных ключей и векторов инициализации.


  1. Главная ссылка к новости (http://php.net/index.php#id201...)
  2. OpenNews: Выпуск PHP 5.3.29 ознаменовал прекращение поддержки ветки PHP 5.3
  3. OpenNews: Опубликован первый вариант спецификации для языка программирования PHP
  4. OpenNews: Разработчики PHP представили интерпретатор нового поколения (PHPNG)
  5. OpenNews: Facebook представил Hack, вариант языка PHP со статической типизацией
  6. OpenNews: Подтверждён факт взлома инфраструктуры проекта PHP
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/40480-php
Ключевые слова: php
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (70) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 22:37, 28/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    уверены насчет "const ONE = 1; const TWO = ONE + 2;"
    т.к. TWO тогда будет 3 )))
     
     
  • 2.2, freehck (ok), 22:41, 28/08/2014 [^] [^^] [^^^] [ответить]  
  • +12 +/
    И в таких вот примерах программирования на PHP все интернеты...
     
  • 2.3, Ессно аноним. (?), 22:41, 28/08/2014 [^] [^^] [^^^] [ответить]  
  • +18 +/
    Всё верно. В новой версии TWO == 3.
     
  • 2.42, userd (ok), 16:00, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Между тем, в http://ru2.php.net/migration56.new-features этот, безусловно, волнующий фрагмент кода написан как

    const ONE = 1;
    const TWO = ONE * 2;

     

  • 1.4, Аноним (-), 22:57, 28/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Поддержка алгоритма хэширования gost-crypto

    это должно быть в самом языке?

     
     
  • 2.12, Анонизм (?), 05:29, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >> Поддержка алгоритма хэширования gost-crypto
    > это должно быть в самом языке?

    Why not? Мне кажется чем больше стандартизовано на уровне языка (только нормально, с какими-то конвенциями всё-таки, а не так, что у решающих совершенно аналогичные задачи функций разные порядки аргументов и т.п.) - тем лучше - меньше простор для "велоспорта", меньше "самобытности" и "неповторимого стиля" в разных программах, лучше портируемость программ.

     
  • 2.17, йцу (?), 09:29, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Не в языке, а в стандартной библиотеке. Почему бы и нет?
     
  • 2.46, angra (ok), 17:50, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Это же пых, там все либы засунуты в язык.

     

  • 1.5, Аноним (-), 23:08, 28/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >> mysqlnd добавлен новый метод извлечения данных, примечательный меньшим потреблением памяти за счёт большего числа операций копирования блоков памяти;

    Месье знает толк

     
     
  • 2.24, йцу (?), 10:09, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Не уточните, что вас смущает?
     
     
  • 3.48, Аноним (-), 17:58, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Вместо выделения буферов и копирования можно было реализовать указатель на память
     
     
  • 4.56, Sabakwaka (ok), 00:07, 30/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Менее производительно
     
     
  • 5.58, Аноним (-), 00:37, 30/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Реализация блокировок на многоядерных системах?
     

  • 1.6, freehck (ok), 23:24, 28/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > "function f($req, $opt = null, ...$params)"
    > все дополнительные аргументы передаются в форме массива $params.

    Ага. Они научились передавать дополнительные аргументы в виде списка при использовании специальной конструкции. Почему мне это напоминает точку?

    > используя оператор "...". Например, "$operators = [2, 3]; echo add(1, ...$operators);", где add является функцией трёх аргументов;

    Ого. А ещё они научились разворачивать списки. Почему мне это напоминает запятую? (Окей, не придирайтесь - ,@)

    Может быть подбросить разработчиком PHP книжку какую... SICP, например, или PCL? Они там ещё много идей почерпнут.

    > Возможность использования оператора use для импорта функций и констант, в дополнение к импорту классов.

    Просветлятся, например, как require реализовывать надо...

     
     
  • 2.7, Аноним (-), 00:39, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Судя по коммитам в мастер (он же php7), книжки недавно почитали. Например, вместо бизоновских регулярок, плюющихся опкодами на лету как попало, сделали AST.

    Лет через 5, кажись, будет что-то похожее на настоящее.

     
     
  • 3.19, йцу (?), 09:33, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Раньше. 7 планируют через пару лет, и он уже точно будет включать Uniform Variable Syntax, phpng-оптимизации, AST.
     
  • 3.57, Sabakwaka (ok), 00:07, 30/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Судя по коммитам в мастер (он же php7), книжки недавно почитали. Например,
    > вместо бизоновских регулярок, плюющихся опкодами на лету как попало, сделали AST.
    > Лет через 5, кажись, будет что-то похожее на настоящее.

    Через пять лет тя кремируют уже.

     
  • 2.47, angra (ok), 17:52, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Можно вообще-то вспомнить Perl, на котором php основывался и в котором все это было пару десятилетий назад.
     

  • 1.8, Аноним (-), 01:38, 29/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Годы идут, а по-прежнему NULL < -1, NULL == 0, "666" == "0666", "1e3" == "1000", а деление на ноль - warning.

    Прочие WTF'ы не проверял, но уверен, что они на месте.

     
     
  • 2.9, udev rules (?), 03:59, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Спасибо, ещё несколько примеров того, почему php – плохой язык.
     
     
  • 3.35, Свет в твоем окне (?), 13:40, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Пожалуйста, http://habrahabr.ru/post/142140/.
     
     
  • 4.40, анонимус (??), 15:44, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Я конечно с вами согласен что php ужасен. Чего только стоит function foo($x, $x){//...} Но все-же справедливости ради стоит отметить что половина того что там написано уже не актуально.
     
  • 4.44, Аноним (-), 17:28, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как же вы задрали со своим фракталом.
     
     
  • 5.45, Настрадамус (?), 17:38, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Что есть, то есть, товарищ.
     
  • 2.11, Анонизм (?), 05:24, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А как люди живут со всем этим? Вот как, например, проверить строку на равенство "1e3" и неравенство "1000"? Или, более жизненно, численную переменную, что она равна нулю, но не NULL?
     
     
  • 3.13, Ананасус (?), 07:13, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Очевидно, использовать тройное равенство. Оно исключает приведение типов.

    >Вот как, например, проверить строку на равенство "1e3" и неравенство "1000"?

    $a === '1e3'; $b !== '1e3'
    >Или, более жизненно, численную переменную, что она равна нулю, но не NULL?

    $c === 0

     
     
  • 4.50, Анонизм (?), 18:15, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Очевидно, использовать тройное равенство. Оно исключает приведение типов.

    Тогда в чём проблема?

     
     
  • 5.52, Аноним (-), 20:20, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну обкакать же пых хочется. А тут такая возможность - дёшево и сердито
     
  • 3.18, Аноним (-), 09:31, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    use ===, Luke.

    php > var_dump(0 === NULL);
    bool(false)
    php > var_dump(0 == NULL);
    bool(true)
    php > var_dump(1e3 === 1000);
    bool(false)
    php > var_dump(1e3 == 1000);
    bool(true)

     
  • 2.20, йцу (?), 09:37, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Прочие WTF'ы не проверял, но уверен, что они на месте.

    Я вам помогу: http://php.net/manual/en/types.comparisons.php
    Но, как уже отметили выше, большинство этих проблем решаются строгим сравнением.

     
     
  • 3.26, Аноним (-), 11:13, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Как строгое сравнение поможет с первыми двумя проблемами, делающими результат сортировки массива зависящим от порядка сравнения элементов?
     
     
  • 4.27, йцу (?), 11:27, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Я сказал "большинство проблем", а не "все".
    Если вас не устраивает результат при сравнении целого с null, то можете определить какое-угодно поведение, благо проверить тип переменной не составляет труда.
     
     
  • 5.28, Аноним (-), 11:43, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как это поможет исправить проблему, связанную с тем, что сортировка массива встр... большой текст свёрнут, показать
     
     
  • 6.30, йцу (?), 12:39, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Для таких случаев передается второй аргумент (SORT_NUMERIC, SORT_STRING, etc). По-умолчанию используется SORT_REGULAR (без преобразования типов) и результат сортировки значений разных типов может быть непредсказуемым (о чем так же ясно сказано в документации).
    + usort в сочетании с лямбдами позволяет определить какое угодно условие сравнение.
    Короче, rtfm.
     
     
  • 7.32, Аноним (-), 13:00, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ты крайне наивен, если думаешь, что SORT_NUMERIC делает порядок детерминированным.

    asort(array(1,-1,0,NULL,2,0,-2))
    Array
    (
        [6] => -2
        [1] => -1
        [5] => 0
        [3] =>
        [2] => 0
        [0] => 1
        [4] => 2
    )

    asort(array(NULL,-1,0,1,2,-2, 0))
    Array
    (
        [5] => -2
        [1] => -1
        [6] => 0
        [2] => 0
        [0] =>
        [3] => 1
        [4] => 2
    )

    asort(array(0,1,-1,0,-2,2,NULL))
    Array
    (
        [4] => -2
        [2] => -1
        [6] =>
        [3] => 0
        [0] => 0
        [1] => 1
        [5] => 2
    )

    К тому же, если делать RTFM, полезнее тратить время и силы на изучение вменяемых языков, а не этого грабельного поля.

     
     
  • 8.33, йцу (?), 13:31, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет Просто если SORT_NUMERIC подразумевает приведение значения к числу при срав... текст свёрнут, показать
     
     
  • 9.34, Аноним (-), 13:40, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    для сортировки массива чисел Не, я не готов принимать столько упорина Для срав... текст свёрнут, показать
     
     
  • 10.38, йцу (?), 14:30, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для сортировки массива с _разными типами данных_ Вы действительно не видите раз... текст свёрнут, показать
     
     
  • 11.43, Аноним (-), 17:14, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Разница очевидна С тоо, что результат сортировки массива должен быть детерминир... текст свёрнут, показать
     
     
  • 12.62, йцу (?), 13:13, 30/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тогда зачем вы приводите этот алгоритм в качестве аналога Ещё раз если мы явн... текст свёрнут, показать
     
  • 10.53, AlexAT (ok), 20:34, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А можно только один вопрос это когда это NULL у нас стал числовым типом ... текст свёрнут, показать
     

  • 1.10, Анонизм (?), 05:18, 29/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > добавлены константные скалярные выражения, функции с переменным числом аргументов, ... оператор возведения в степень

    Facepalm. Если этого не было и добавлено только сейчас. Жесть.

     
     
  • 2.14, Ананасус (?), 07:20, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >константные скалярные выражения

    Было, define(ONE, 1);
    Но тут скорее аналог не сишных констант, а сишных макросов.
    >оператор возведения в степень

    Было, функция pow. Теперь сделали и оператор.
    >функции с переменным числом аргументов

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

     
     
  • 3.15, AlexAT (ok), 08:25, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >функции с переменным числом аргументов

    Было, но не так удобно - приходилось аргументы выцарапывать через func_get_args / func_num_args + func_get_arg, плюс эти функции возвращали _все_ переданные аргументы. Самая мякотка ...$args в том, что $args не включает эксплицитных аргументов.

     
  • 3.49, angra (ok), 18:09, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Не знаю, не пользовался. Не могу придумать кейс, при котором это было
    > бы полезно.

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

     
     
  • 4.63, cmp (ok), 13:48, 30/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Обходились, и обойдемся впреть.

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

     
  • 4.64, Ананасус (?), 16:15, 30/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Вместо приведения кейса, я перейду на личности и ещё раз пёрну в лужу

    Ок, твои доводы мне ясны

     

  • 1.16, sorrymak (ok), 09:05, 29/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Добавлен новый математический оператор "**", применяемый для возведения в степень

    Не прошло и 19 лет... Или прошло?

     
     
  • 2.22, йцу (?), 09:45, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Серьёзно? Вам настолько не хватало этого?

    > Не прошло и 19 лет... Или прошло?

    В Си уже 40 лет без него как-то обходятся. В Java — лет двадцать. И в половине других языков. Может вы всё-таки преувеличиваете ценность этой фичи?

     
     
  • 3.25, Anonimous (?), 10:43, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Всем, кому вкладывали на основах программирование конструкцию "a^b" очень-очень не хватало этого математического оператора. Хотя мне сильнее не хватало sqr/sqrt, хоть я уже 20 лет не считаю себя программистом, но в 75% так называемых калькуляторов до сих пор нет кнопки извлечения корня, не говоря уже о возведении в степень - думаю, как раз из-за отсутствия простых реализаций в тех языках, на которых эти калькуляторы написаны.
     
     
  • 4.31, йцу (?), 12:43, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    О каких "калькуляторах" речь? Я, наверное, не до конца вас понимаю, но написание калькуляторов — это не самый стандартный кейс для PHP. Или нет?
     
     
  • 5.36, Xasd (ok), 13:42, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > написание калькуляторов — это не самый стандартный кейс для PHP

    вот щаз я так и представил -- реализацию калькулятора как web-страничка (без Javascript)...

    ...и каждая кнопка (и цифры и операции) это анкорная ссылка вида ---




    < a href="?...">...</a>


    :-)

    да, PHP-программисты такое могут, и они наверняка даже не заподозрять ни чего неладного в этом :)

     
     
  • 6.37, Аноним (-), 14:09, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >они наверняка даже не заподозрять ни чего неладного в этом :)

    Угу, точно так же, как ты до сих пор не заподозрил ничего неладного в орфографии.

     
     
  • 7.39, Xasd (ok), 14:40, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>они наверняка даже не заподозрять ни чего неладного в этом :)
    > Угу, точно так же, как ты до сих пор не заподозрил ничего
    > неладного в орфографии.

    именно так. да. хорошее сравнение! :-)

     
  • 3.51, angra (ok), 18:19, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А в других _скриптовых_ языках этот оператор есть. И в пых его в конечном итоге добавили. Значит таки он был нужен в языке с самого начала. Как и множество других фич. Это очень смешно наблюдать как пых реализует постепенно вещи, которые давно есть в языках, существовавших до его рождения. Сначала быдлокодерам выкатили примитивный язык, а теперь потихоньку(чтобы не перегрелись мозги ЦА) доводят язык до нормального.  
     
     
  • 4.54, Xasd (ok), 22:12, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а когда разработчики-PHP собираются доводить PHP -- до ситуации когда каждый HTTP-запрос не будет поновой (поновой каждый раз) вычислять декларацию классов?

    допустим я в PHP-файлах задекларировал 200 классов, и в каждом HTTP-запросе использую несколько классов  (не все сразу, но разные в зависимости от ситуации).

    то есть -- мне нужно чтобы некоторая часть PHP-кода -- вычислялась бы ТОЛЬКО один раз (при старте HTTP-сервера) , а во время дальнейших HTTP-запросов уже использовалось бы то состояние которое УЖЕ было вичислено тот 1 раз (а не вычислялось бы каждый раз поновой).

     
     
  • 5.55, Аноним (-), 23:37, 29/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    http://daemon.io/
     
     
  • 6.59, Xasd (ok), 01:26, 30/08/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > http://daemon.io/

    интерфейс совместимый с апачевским mod_fcgid -- тут есть? или это просто поделка, которая сама-в-себе и слабо связанна с Apache HTTP Server ?

    (поумолчанию в качестве нормальной работы -- апачевский mod_fcgid передаёт fastcgi-демону сокетный объект как файловый дескриптор с номером 1 .. БЕЗ всяких-там "/tmp/phpdaemon.fcgi.sock". это считается штатной и качественной ситуацией, так mod_fcgid может (и должен!) запускать одновременно несколько экземпляров fastcgi-демонов, и эти fastcgi-демоны не должны друг другу мешаться)

    где документация вообще?

    и насколько вся эта система в итоге будет совместима со всякими legacy-конструкциями типа $_SESSION[...] и $_REQUEST[...] ? (для целей legacy-кода, например "вставить SAPE-ссылки")

    если с legacy получается облом -- то зачем тогда вообще терпеть этот PHP ? PHP бесполезен без Legacy, так как проще взять https://pypi.python.org/pypi/flipflop и https://pypi.python.org/pypi/bottle :-)

     
     
  • 7.65, AlexAT (ok), 18:37, 30/08/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >>> так как проще взять https://pypi.python.org/pypi/flipflop и https://pypi.python.org/pypi/bottle

    Честно - мне уже от одних ссылок плохо. Pypipypypipypypypypypipipy.

     

  • 1.41, userd (ok), 15:54, 29/08/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    В описании оператора ** трогательно обойдён вопрос ассоциативности.
    Как вы думаете, 2**1**2 вернёт 2 или 4?
     
     
  • 2.60, Аноним (-), 09:08, 30/08/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Как вы думаете, 2**1**2 вернёт 2 или 4?

    <troll>Думаю, вернёт 3 -- это же PHP.</troll>

     
  • 2.61, бедный буратино (ok), 12:08, 30/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    я достаю из широких штанин, дебианом бесценного груза:

    > apt-get install php5-cli
    > php --version

    PHP 5.6.0RC4 (cli) (built: Aug 19 2014 15:27:20)
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.6.0-dev, Copyright (c) 1998-2014 Zend Technologies
        with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies

    php -r 'echo 2**1**2;'
    2


    мы не думаем, мы знаем...

     
     
  • 3.67, Какаянахренразница (ok), 07:23, 01/09/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > php -r 'echo 2**1**2;'
    > 2

    Это полный !@#$%^.

     
     
  • 4.71, йцуенг (?), 19:46, 01/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Степени возводятся справа налево.
     
     
  • 5.73, Какаянахренразница (ok), 05:13, 02/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Степени возводятся справа налево.

    При обычной алгебраической записи (двойка, у неё в уголке единица и у единицы в уголке двойка) так бы и было.

    Ниже в комментах написали, что доки PHP на эту тему противоречат друг другу. В одном месте написано слева направо, в другом -- наоборот.

     
  • 3.70, userd (ok), 13:52, 01/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    :)
     
  • 2.66, AlexAT (ok), 18:39, 30/08/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В описании оператора ** трогательно обойдён вопрос ассоциативности.
    > Как вы думаете, 2**1**2 вернёт 2 или 4?

    LOLWUT?

    http://ru2.php.net/manual/en/language.operators.precedence.php

     
     
  • 3.68, Какаянахренразница (ok), 07:27, 01/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >> В описании оператора ** трогательно обойдён вопрос ассоциативности.
    >> Как вы думаете, 2**1**2 вернёт 2 или 4?
    > LOLWUT?
    > http://ru2.php.net/manual/en/language.operators.precedence.php

    Как бы не так. В документации написано, что операция "**" -- лево-ассоциативна. То есть возведение в степень должно идти слева направо (2**1)**2. А Буратино показал, что реализация противоречит документации. Вот тебе и LOLWUT...

     
  • 3.69, userd (ok), 13:19, 01/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за ссылку, есть ещё http://ru2.php.net/migration56.new-features#migration56.new-features.exponent , где написано «A right associative ** operator has been added to support exponentiation, along with a **= shorthand assignment operator.» и пример вычисления 2 ** 3 ** 2 с результатом 512.

    т.е. материалы на сайте противоречивы.

     
     
  • 4.72, Led (ok), 01:41, 02/09/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > т.е. материалы на сайте противоречивы.

    Вы ещё хотите, чтобы т.н. "разработчики" т.н. "языка программирования" PHP различали где "право", а где "лево"? Может они ещё и таблицу умножения должны знать?
    Вы слишком многого хотите:)

     

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



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

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