2011-10-12 111 views
0

我想知道这是否可能,尽管我完全相信也许有更好的方法。我有这个脚本结构:从一个函数内部调用一个函数php oop

class Mother { 
    public function __construct() { 
     // script here 
    } 

    public function writer() { 
     if() { 
      // if true 
     } else { 
      // call function hello 
     } 
    } 

    public function hello() { 
     echo "Hello there."; 
    } 
} 

如何从writer()调用hello()?谢谢。

回答

3

像这样

public function writer() { 
    $this->hello(); 
} 

$this是类的保留变量,被实例化任何类(通过new myClass称呼)访问$this,但如果您使用的是静态类,你需要定义函数静态和使用static::myFunction方法,例如:

class exampleClass { 
    public static function exampleFunc() { 
     static::hello(); 
    } 
    public static function hello() { 
     echo "Hello!"; 
    } 
} 
exampleClass::exampleFunc(); 
+0

感谢您提供非常快速的反馈,请问这是最佳方法吗? –

+0

是的,这几乎是唯一的方法,除非你静态使用类,在这种情况下,请参考我更新后的文章中的例子,否则'$ this'是访问同一类中的函数的最佳方式。 – Nexerus

+0

只需几分钟,非常有启发性,非常感谢Nexerus。 –

0
// call function hello 
$this->hello(); 

而且,你的O它的功能在语法上是错误的。注意括号。

public function writer() { 
public function hello() { 
+0

感谢您的注意和反馈。真的很感激它。 –

0

在我的PHP 5.3.4安装

public function hello() { } 

似乎到可以从另一个实例方法有两种方式

$this->hello() 
self::hello() 

显然,

$this 

参考到实例不会有用能够在调用公共方法作为类方法时使用