«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я не могу инициализировать свойства с помощью анонимных функций в PHP?

Почему я не могу инициализировать свойства с помощью анонимных функций в PHP?

Опубликовано 7 ноября 2024 г.
Просматривать:502

Why Can\'t I Initialize Properties with Anonymous Functions in PHP?

Инициализация свойства с помощью анонимных функций: почему и как?

Как упомянуто в приведенном ниже фрагменте кода, инициализация свойства с помощью анонимной функции во время Объявление класса вызывает «Ошибка синтаксического анализа: синтаксическая ошибка, неожиданная T_FUNCTION» в PHP. Тем не менее, назначение функций свойствам внутри конструкторов возможно, как показано во втором фрагменте кода.

// Property initialization with anonymous function error
class AssignAnonFunction {
    private $someFunc = function() {
        echo "Will Not work";
    };
}

// Property initialization in constructor
class AssignAnonFunctionInConstructor {
    private $someFunc;

    public function __construct() {
        $this->someFunc = function() {
            echo "Does Work";
        };
    }
}

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

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

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

Хотя причина такого дизайнерского решения в PHP остается несколько спекулятивной, возможные объяснения включают сложность реализации такой функции и недостаточный спрос на нее.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3