douyi2798
2015-06-15 19:32
浏览 376
已采纳

你如何在PHP中的类中使用匿名函数?

How do I call $greet inside this class? I am using PHP 5.5.4.

<?PHP   
class Model
{
    public $greet = function($name)
    {
        printf("Hello %s
", $name);
    };
}

$test = new Model();
$test->greet('World');
$test->greet('PHP');
?>

Parse error: syntax error, unexpected '$greet' (T_VARIABLE), expecting function (T_FUNCTION)

Also tried this,

$test = new Model();
call_user_func($test->greet('World'));
call_user_func($test->greet('PHP')) 

The anonymous function works fine outside the class (straight from the manual).

<?php
$greet = function($name)
{
    printf("Hello %s
", $name);
};

$greet('World');
$greet('PHP');
?>

EDIT: I took out the dollar signs, in my call (I caught it just as an answer started to roll in. It did not help,

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
", $name);
        };
    }
}

$test = new Model();
$test->greet('johnny');

Now I get,

Fatal error: Call to undefined method Model::greet() 

图片转代码服务由CSDN问答提供 功能建议

如何在此课程中调用 $ greet </ code>? 我使用的是PHP 5.5.4。</ p>

 &lt;?PHP 
class Model 
 {
 public $ greet = function($ name)
 {
 printf(  “Hello%s 
 
”,$ name); 
}; 
} 
 
 $ test = new Model(); 
 $ test-&gt; greet('World'); 
 $  test-&gt; greet('PHP'); 
?&gt; 
 
解析错误:语法错误,意外'$ greet'(T_VARIABLE),期待函数(T_FUNCTION)
 </ code> </ pre> \  n 
 

也尝试了这个,</ p>

  $ test = new Model(); 
call_user_func($ test-&gt; greet('World')); 
call_user_func  ($ test-&gt; greet('PHP'))
 </ code> </ pre> 
 
 

匿名函数在类外工作正常(直接来自手册)。</ p>

 &lt;?php 
 $ greet  = function($ name)
 {
 printf(“Hello%s 
 
”,$ name); 
}; 
 
 $ greet('World'); 
 $ greet('PHP  '); 
?&gt; 
 </ code> </ pre> 
 
 

编辑:我在电话中取出了美元符号(我抓住它就像一个答案开始滚动。 它没有帮助,</ p>

  call_user_func($ test-&gt  ;迎接( '世界')); 
call_user_func($测试 - &GT;迎接( 'PHP')); 
 </代码> </ PRE> 
 
 

编辑:</ p>

  class Model 
 {
 public $ greet; 
 function __construct()
 {
 $ this-&gt; greet = function($ name)
 {
 printf(“ 你好%s 
 
“,$ name); 
}; 
} 
} 
 
 $ test = new Model(); 
 $ test-&gt; greet('johnny'); \  n </ code> </ pre> 
 
 

现在我明白了,</ p>

 致命错误:调用未定义的方法Model :: greet()
 <  / code> </ pre> 
 </ div>

2条回答 默认 最新

相关推荐 更多相似问题