Инициализация свойства с помощью анонимных функций: почему и как?
Как упомянуто в приведенном ниже фрагменте кода, инициализация свойства с помощью анонимной функции во время Объявление класса вызывает «Ошибка синтаксического анализа: синтаксическая ошибка, неожиданная 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