За последние 24 часа нас посетили 20882 программиста и 1130 роботов. Сейчас ищут 334 программиста ...

Вопросы по версии PHP8

Тема в разделе "Прочие вопросы по PHP", создана пользователем MouseZver, 15 дек 2020.

  1. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Good Morning. Прошу прощения если не там создал тему.

    Перечитывая документацию, столкнулся с непонятными фишками и возник вопрос - А где это черт возьми написано ?

    Именованные аргументы
    2020-12-15_10-32-04.png

    Зарегистрированные имена аргументов ? Окай... идем смотреть где они зарегистрированные
    https://www.php.net/manual/ru/function.array-fill.php


    2020-12-15_10-34-31.png

    Либо тут банально опечатка...
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @MouseZver, ну да, опечатка. $count - опечатка :)
    Обрати внимание на подсказку по функции, что IDE выдаёт:
    PHP:
    1.     /**
    2.      * Fill an array with values
    3.      * <p>Fills an array with <code>num</code> entries of the value of the <code>value</code> parameter, keys starting at the <code>start_index</code> parameter.</p>
    4.      * @param int $start_index <p>The first index of the returned array.</p> <p>If <code>start_index</code> is negative, the first index of the returned array will be <code>start_index</code> and the following indices will start from zero (see example).</p>
    5.      * @param int $num <p>Number of elements to insert. Must be greater than or equal to zero.</p>
    6.      * @param mixed $value <p>Value to use for filling</p>
    7.      * @return array <p>Returns the filled array</p>
    8.      * @link https://php.ru/manual/function.array-fill.html
    9.      * @see array_fill_keys(), str_repeat(), range()
    10.      * @since PHP 4 >= 4.2.0, PHP 5, PHP 7
    11.      */
    12.     function array_fill(int $start_index, int $num, $value): array {}
    --- Добавлено ---
    Хотя в исходниках 8-ки (basic_functions.stub.php):
    PHP:
    1. function array_fill(int $start_index, int $count, mixed $value): array {}
    А в array.c:
    Код (Text):
    1. /* {{{ Create an array containing num elements starting with index start_key each initialized to val */
    2. PHP_FUNCTION(array_fill)
    3. {
    4.    zval *val;
    5.    zend_long start_key, num;
    6.  
    7.    ZEND_PARSE_PARAMETERS_START(3, 3)
    8.      Z_PARAM_LONG(start_key)
    9.      Z_PARAM_LONG(num)
    10.      Z_PARAM_ZVAL(val)
    11.    ZEND_PARSE_PARAMETERS_END();
    12. /* ..... */
    13. }
    14. /* }}} */
    Так что да, num как имя параметра.
     
    #2 Sail, 15 дек 2020
    Последнее редактирование: 15 дек 2020
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Да я про именованные аргументы, про то что их в офф документации не указали.
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Нет, там написано зарезервированные ключевые слова.
    А вот и список https://www.php.net/manual/ru/reserved.keywords.php
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Это от темы далеко
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    @MouseZver "зарегистрированные имена аргументов" такого вообще нет.
    В документации написано про зарезервированные слова. Прямо на твоём скриншоте выделено синим.
    --- Добавлено ---
    @MouseZver а стрелочками ты указал на типы. Они там всегда были в документации, и до появления именованных аргментов.
    Если ты ищешь имена аргументов, то это имена переменных прописные в документации.
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    1. открой именованные аргументы по ссылке 1 поста
    2. обрати внимание на указанный num аргумент.
    3. теперь Челлендж: Найди об этом аргументе в доке...
    4. А вдруг захочу указать num666: $var - но нельзя... Почему ?
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    @MouseZver там опечатка, потому что если запустить пример, вылазит ошибка Unknown named parameter $num
     
  9. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    845
    Симпатии:
    130
    Кстати, то, что в 8-ке $num заменили на $count, а не на $amount или $qty какие-нибудь, более чем странно.
    Лучше бы camelCase алиасов ф-циям добавили и их параметрам (возможно, даже местами переставив порядок, а то с ним тоже бардак), заодно сгенерив отдельную документацию для 8-ки )
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    @don.bidon я репортнул это как баг, теперь там в 14 примере поменяли на count, а в 15 отстался num *facepalm.jpg*