Дмитрий Маретов

Первое: непонятно было как вызвать стандартную функцию json_decode в пользовательской функции json_decode. Увидел в обсуждении ответ, что надо поставить перед названием стандартной функции обратный слэш "\". В том же ответе дается ссылка на урок про неймспейсы, но там нет такой информации (наверное стоит добавить). И насколько мне известно нельзя называть пользовательские функции так же, как стандартные. Или все-таки можно? Если нельзя, то почему в уроке нарушается это правило?

Второе: почему изменился синтаксис "throw new \Exception()". До сих пор экземпляр класса создавался без обратного слеша. И в мануале в примере тоже написано без слеша. На репле работает и так, и так. А при проверке задачи без слэша не работат.

2 0

Дима, привет. Ответ на твой вопрос здесь - https://www.php.net/manual/en/language.namespaces.fallback.php Чтобы ссылаться на классы (а Exception это класс) - надо прописывать его полный путь либо в импортах use \Exception; в начале, либо внутри кода. Если ты это не сделаешь, то будет искаться по текущему неймспейсу \App\Foo\Exception; Для функций механизм другой. Сперва ищется в текущем неймспейсе, а потом в глобальном. Тк в задании создаешь свою функцию с таким же как с именем глобальной, то соответственно к ней нужно обратиться по полному пути (или опять же импортировать use function \json_decode; Нельзя импортировать функцию с таким же именем, поэтому обращаемся к ней со слешем.

0

Угу, механизм неймспейсов общий абсолютно для всего. Обращение с ведущим слешом было в курсах и раньше и рассказывалось в основах. Это всего лишь полный путь до сущности (класс, функция и т.п.).

И насколько мне известно нельзя называть пользовательские функции так же, как стандартные.

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

0

Похожие вопросы

Анатолий Москалев 17 декабря 2019 →

Добрый вечер)Подскажите пожалуйста,в чем я допустил ошибку? https://ru.hexlet.io/code_reviews/184334

Александр Новиков 28 ноября 2019 →

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

Lenri Rodionova 01 августа 2019 →

Из теории. Хочу уточнить, функция openFile связана с readFile, поэтому в примере реализации function run...

Артем Соломатин 28 июня 2019 →

Бросаю исключение об опечатке: Этот объект содержит внутри rебя сообщение, переданное в конструктор, бектре...

Anatoly Abrekov 07 июня 2019 →

Как вызвать встроенную в PHP функцию jsondecode внутри пользовательской jsondecode? Т.к. названия одинаковы...

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →