我有一个班级:
class demo {
function newDemo(){
$v=$this->checkDemo;
$v('hello'); // not working this reference, or how to do this?
}
function checkDemo($a){
...
return $a;
}
}
那么,我如何在类中引用checkDemo函数方法?
答案 0 :(得分:6)
要使对象方法可调用,您需要一个数组。索引0是实例,索引1是方法的名称:
$v = Array($this,"checkDemo");
$v("hello");
编辑:请注意,此功能仅适用于PHP 5.4
答案 1 :(得分:3)
答案 2 :(得分:1)
<?php
class Foo
{
function Variable()
{
$name = 'Bar';
$this->$name(); // This calls the Bar() method
}
function Bar()
{
echo "This is Bar";
}
}
$foo = new Foo();
$funcname = "Variable";
$foo->$funcname(); // This calls $foo->Variable()
?>
答案 3 :(得分:0)
如果你只是:
,那会不会更容易和更简单class demo {
function newDemo(){
echo $this->checkDemo('hello');
}
function checkDemo($a){
return $a;
}
}
$demo = new demo;
$demo->newDemo(); // directly outputs "hello", either to the browser or to the CLI
答案 4 :(得分:0)
当您可以直接拨打$ this-&gt; checkDemo($ data)
时没用然而......你可以这样做
$v=function($text){ return $this->checkDemo($text); };
echo $v('hello');
答案 5 :(得分:0)
只需调用call_user_func
函数,并从对象引用和方法名称作为第一个参数传递数组:
class demo {
function newDemo(){
return call_user_func( array( $this, 'checkDemo' ), 'hello' );
}
function checkDemo( $a ){
...
return $a;
}
}
答案 6 :(得分:0)
这样做的一种方法:
<?php
class HelloWorld {
public function sayHelloTo($name) {
return 'Hello ' . $name;
}
public function test () {
$reflectionMethod = new ReflectionMethod(__CLASS__, 'sayHelloTo');
echo $reflectionMethod->invoke($this, 'Mike');
}
}
$hello = new HelloWorld();
$hello->test();
答案 7 :(得分:-2)
调用函数时必须添加参数:
$v = $this->checkDemo('hello');