2011-04-03 100 views
0

我有一个类PHP类扩展和家长的construnctor

 
class parent { 
function __construct(){ 
global $var; 
} 
} 

和其他类

 
class child extends parent { 
function construct(){ 
parent :: __construct; 
} 
function print(){ 
echo $var; 
} 
} 
 
$a = new child; 
$a->print(); 

有没有什么办法让$ VAR提供给print()方法,而不调用global $var;里面print()

谢谢!

回答

0

不,这是不可能的,因为它只是一个全局变量,因此在父代或继承类中没有任何特殊的状态。

但是,你可以:

  1. 设置实例父类中(即:一流水平)变量的值相同的全局变量。然后,您可以在子类的print方法中使用继承的变量。

  2. 将全局变量作为参数传递给构造函数。然而,你会需要修改这个孩子(这会将变量传递给父类)和父类构造函数。

+0

感谢您的帮助! – 2011-04-03 16:05:30

+0

@Sorin没问题。 :-) – 2011-04-03 16:05:59

0

如果您将$ var定义为成员变量,这是可行的。

class parent { 
    public $var; 
    function __construct(){ 
    global $var; 
    $this->var = $var; 
    } 
} 

class child extends parent { 
    function construct(){ 
    parent :: __construct; 
    } 
    function print(){ 
    echo $this->var; 
    } 
} 

$a = new child; 
$a->print(); 
+0

你的代码是错误的。 (您需要在打印方法中使用'echo $ this-> var;'):-) – 2011-04-03 21:48:16

+0

已修复。谢谢 :) – jmathai 2011-04-04 19:58:07