Хобрук: Ваш путь к мастерству в программировании

Имя функции должно быть строкой php?

После нескольких часов гугления и поиска ответа я сдался и очень разочаровался в php, отсутствие поддержки по основным ошибкам. Во всяком случае, вот моя функция, что я делаю неправильно?

$accessToken = function(){
        $array = array(
            "foo" => "bar",
            "bar" => "foo"
        );
        
        $obj = json_encode($array);
        $obj = json_decode($obj);
        
        return $obj->foo;
};

$getInfo = function(){
       
        $code = $accessToken();
        return $code;

        
};

$getInfo();

я получаю сообщение об ошибке

Примечание. Неопределенная переменная: accessToken в C:\inetpub\wwwroot\mysite\lab\cfhttp.php в строке 43.

Неустранимая ошибка: имя функции должно быть строкой в ​​C:\inetpub\wwwroot\mysite\lab\cfhttp.php в строке 43.

15.10.2017

  • просто назовите их function accessToken(){} и function getInfo(){} и используйте их так же, как accessToken() и getInfo() 15.10.2017
  • $accessToken не находится внутри $getInfo() 15.10.2017
  • отсутствует поддержка по основным ошибкам. Существуют буквально тысячи сайтов/учебников (включая этот сайт), объясняющих практически все возможные сообщения об ошибках в PHP и принципы их работы. Что касается этой проблемы, я рекомендую прочитать об области действия переменной. 15.10.2017
  • Я согласен, есть много, но я гуглил и не мог найти ничего, что помогло бы мне исправить эту ошибку. Это легко, когда вы владеете этим языком, и в моем случае у меня ушло 2 часа гугления, и там не было ничего, что упомянул superDJ. 15.10.2017

Ответы:


1

$accessToken не входит в область действия внутри $getInfo()

$accessToken = function(){
        $array = array(
            "foo" => "bar",
            "bar" => "foo"
        );

        $obj = json_encode($array);
        $obj = json_decode($obj);

        return $obj->foo;
};

$getInfo = function($accessTokenFunction){

        $code = $accessTokenFunction();
        return $code;


};

$getInfo($accessToken);
15.10.2017

2

use () чтобы взять переменную внутри этой области

$getInfo = function() use ($accessToken) {
    $code = $accessToken();
    return $code;
};

https://3v4l.org/BOtnf

15.10.2017

3

В PHP вы обычно определяете функцию другим способом. Попробуйте следующее:

function accessToken() {
     $array = array(
          "foo" => "bar",
          "bar" => "foo"
     );

     $obj = json_encode($array);
     $obj = json_decode($obj);

     return $obj->foo;
}

function getInfo() {
     $code = accessToken();
     return $code;
}

getInfo();

Вы также можете посмотреть здесь http://php.net/manual/en/functions.variable-functions.php и http://php.net/manual/en/functions.user-defined.php

21.10.2017
Новые материалы

Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

Структуры данных в C ++ - Часть 1
Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

Как я опубликовал свое первое приложение в App Store в 13 лет
Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

Что в лицо
Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

Почему шаблоны проектирования и почему нет?
Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

Создание дизайна обуви с помощью машинного обучения
Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

GraalVM в 2022 году: итоги года
2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..