调用类方法中的功能?调用类方法中的功能?(Calling a function within a C

2019-05-13 01:27发布

我一直在试图找出如何去这样做,但我不太清楚如何。

这里是什么,我试图做一个例子:

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

这里是我有问题的一部分,我怎么叫bigTest()?

Answer 1:

试试这个:

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();


Answer 2:

您提供的样品是无效的PHP和有几个问题:

public scoreTest() {
    ...
}

不正确的函数声明 - 你需要用“功能”关键字来声明功能。

语法而应是:

public function scoreTest() {
    ...
}

其次,包裹bigTest()和smallTest()公共函数的函数(){}并不能让他们的私人 - 你应该使用专用的关键字在这两个分别:

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;
    }
}

此外,还约定,利用类声明(“测试”)类名。

希望帮助。



Answer 3:

我认为你正在寻找这样的事情之一。

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();


Answer 4:

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;
    }
 }


Answer 5:

若要调用从类(声明新)实例化对象的任何方法,你需要“点”来了。 从外面看,你只需要使用由新语句创建的资源。 内部由new创建的任何对象PHP,节省了相同的资源到$此变量。 因此,一个类中,您必须通过$这一点的方法。 在你的类,调用smallTest从类中,你必须告诉PHP它通过要执行新的语句创建的所有对象,只写:

$this->smallTest();


Answer 6:

你需要调用newTest ,使该方法内声明的函数“可见”(见函数中的函数 )。 但是,在将它们的正常功能,并没有方法。



Answer 7:

为了有一个“函数内部功能”,如果我知道你要问什么,你需要PHP 5.3,在那里你可以采取新的闭包功能的优势。

所以,你可以有:

public function newTest() {
   $bigTest = function() {
        //Big Test Here
   }
}


Answer 8:

  class sampleClass
    { 
        public function f1()
        {
           return "f1 run";
        }

        public function f2()
        {
           echo ("f2 run" );
           $result =  $this->f1();
           echo ($result);
        }   

    f2();  

    }

输出:

F2运行F1运行



Answer 9:

您也可以使用self::CONST代替$this->CONST如果要调用当前类的静态变量或函数。



Answer 10:

例如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')


文章来源: Calling a function within a Class method?