2012-01-17 25 views
1

我是OO PHP的新手。有一些问题。从父类中调用扩展类功能

class a { 
protected function a1(){ 
... 
} 
} 

class b extends a { 
public function b1(){ 
... 
} 
} 

假设我们有2个类,如上所述。我打电话给B的像下面的例子

class a { 
var $b; 
function __construct() 
{ 
$b= new b(); 
} 
protected function a1(){ 
$b->b1();  
} 
} 

class b extends a { 
public function b1(){ 
... 
} 
} 

我知道,它可能来自继承类调用父class'es法的方法,但我不知道是否反转方式是可能的吗?我的意思是,在父类中调用扩展类的方法(在这种情况下,class b的方法从class a)没有在__contruct中声明,简单地通过$this->b();? PHP __call

回答

4

是的,你可以调用扩展类的方法。

<?php 
class a 
{ 
    public function a1() 
    { 
     $this->b1();  
    } 

    protected function b1() 
    { 
     echo 'This is in the a class<br />'; 
    } 
} 

class b extends a 
{ 
    protected function b1() 
    { 
     echo 'This is in the b class<br />'; 
    } 
} 

class c extends a 
{ 
    protected function b1() 
    { 
     echo 'This is in the c class<br />'; 
    } 
} 

$a = new a(); 
$a->a1(); 

$b = new b(); 
$b->a1(); 

$c = new c(); 
$c->a1(); 
?> 

这将导致:

这是一类
这是在B
类 这是C类

您可能还对抽象类感兴趣http://us3.php.net/manual/en/language.oop5.abstract.php