2012-01-17 4 views
1

Я новичок в OO PHP. Возникли некоторые вопросы.Вызов расширенной функции класса из родительского класса

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

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

Предположим, у нас есть 2 класса, как описано выше. Я звоню метод Б, как например ниже

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

ответ

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

Это приведет:

Это в классе
Это в б класс
Это в классе С

Вы можете также заинтересованы в абстрактных классах http://us3.php.net/manual/en/language.oop5.abstract.php

Смежные вопросы