Как мне позвонить $greet
внутри этого класса? Я использую PHP 5.5.4.Как вы используете анонимную функцию внутри класса в PHP?
<?PHP
class Model
{
public $greet = function($name)
{
printf("Hello %s\r\n", $name);
};
}
$test = new Model();
$test->greet('World');
$test->greet('PHP');
?>
Parse error: syntax error, unexpected '$greet' (T_VARIABLE), expecting function (T_FUNCTION)
попытался Также это,
$test = new Model();
call_user_func($test->greet('World'));
call_user_func($test->greet('PHP'))
Анонимная функция отлично работает вне класса (прямо из manual).
<?php
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World');
$greet('PHP');
?>
EDIT: Я вынул знаки доллара, на мой звонок (я поймал его так же, как ответ начал катиться в это не помогло,
call_user_func($test->greet('World'));
call_user_func($test->greet('PHP'));
EDIT:.
class Model
{
public $greet;
function __construct()
{
$this->greet = function($name)
{
printf("Hello %s\r\n", $name);
};
}
}
$test = new Model();
$test->greet('johnny');
Теперь я получаю,
Fatal error: Call to undefined method Model::greet()
Зачем вам нужно назначать функцию в конструкторе или каком-либо другом методе? Это не сработает, если вы этого не сделаете (для меня). – johnny
Вы имеете в виду 'Parse error' из вашего первого примера? Использование ключевого слова 'function' в определении класса означает создание метода, а не анонимную функцию. –
Нет, я имею в виду, когда вы назначаете анонимную функцию переменной. Это нужно сделать в функции (или конструкторе). Он не может быть просто переменной-членом. – johnny