在一个Class方法中调用一个函数?

我一直在试图找出如何去做这个,但我不太确定如何。

这是我正在尝试做的一个例子:

class test { public newTest(){ function bigTest(){ //Big Test Here } function smallTest(){ //Small Test Here } } public scoreTest(){ //Scoring code here; } } 

这里是我有问题的部分,我怎么称之为bigTest()?

试试这个:

 class test { public function newTest(){ $this->bigTest(); $this->smallTest(); } private function bigTest(){ //Big Test Here } private function smallTest(){ //Small Test Here } public function scoreTest(){ //Scoring code here; } } $testObject = new test(); $testObject->newTest(); $testObject->scoreTest(); 

您提供的示例不是有效的PHP,有几个问题:

 public scoreTest() { ... } 

不是一个正确的函数声明 – 你需要用“函数”关键字声明函数。

语法应该是:

 public function scoreTest() { ... } 

其次,在public function(){}中封装bigTest()和smallTest()函数并不会使它们变为私有的 – 您应该分别在这两者上使用private关键字:

 class test () { public function newTest(){ $this->bigTest(); $this->smallTest(); } private function bigTest(){ //Big Test Here } private function smallTest(){ //Small Test Here } public function scoreTest(){ //Scoring code here; } } 

另外,在类声明('Test')中使用类名是大写的。

希望有所帮助。

我想你正在寻找这样的东西。

 class test { private $str = NULL; public function newTest(){ $this->str .= 'function "newTest" called, '; return $this; } public function bigTest(){ return $this->str . ' function "bigTest" called,'; } public function smallTest(){ return $this->str . ' function "smallTest" called,'; } public function scoreTest(){ return $this->str . ' function "scoreTest" called,'; } } $test = new test; echo $test->newTest()->bigTest(); 

要调用从类实例化的对象的任何方法(使用新语句),您需要“指向”它。 从外面你只需要使用新语句创build的资源。 在由new创build的任何对象内部,将相同的资源保存到$ thisvariables中。 所以,在一个类中你必须用$ this指向这个方法。 在你的类中,要从类内部调用smallTest ,你必须告诉PHP你想执行的新语句创build的所有对象中的哪一个,只需写:

 $this->smallTest(); 

您需要调用newTest使该方法内声明的函数“可见”(请参阅函数内的函数 )。 但那只是正常的function而没有任何方法。

为了在函数中有一个“函数”,如果我明白你在问什么,你需要PHP 5.3,在这里你可以利用新的Closure特性。

所以你可以有:

 public function newTest() { $bigTest = function() { //Big Test Here } } 
  class sampleClass { public function f1() { return "f1 run"; } public function f2() { echo ("f2 run" ); $result = $this->f1(); echo ($result); } f2(); } 

输出:

f2运行f1运行

如果要调用当前类的静态variables或函数,还可以使用self::CONST而不是$this->CONST

例子1

 class TestClass{ public function __call($name,$arg){ call_user_func($name,$arg); } } class test { public function newTest(){ function bigTest(){ echo 'Big Test Here'; } function smallTest(){ echo 'Small Test Here'; } $obj=new TestClass; return $obj; } } $rentry=new test; $rentry->newTest()->bigTest(); 

例题

 class test { public function newTest($method_name){ function bigTest(){ echo 'Big Test Here'; } function smallTest(){ echo 'Small Test Here'; } if(function_exists( $method_name)){ call_user_func($method_name); } else{ echo 'method not exists'; } } } $obj=new test; $obj->newTest('bigTest') 
 class test { public newTest(){ $this->bigTest(); $this->smallTest(); } private function bigTest(){ //Big Test Here } private function smallTest(){ //Small Test Here } public scoreTest(){ //Scoring code here; } }