2013-03-31 37 views
-2

问题:比较这两段代码,为什么第一个输出什么都没有?
当我使用eclipse来运行这些代码时,什么都没有发生,我不知道它为什么不打印“构造正在运行”。PHP构造函数

然而,当我运行的代码,印刷第二款:
“将构建正在运行...”
“经理构建正在运行...”
为什么呢?

第一段:

<?php 
class Employee 
{ 
    protected $name; 
    protected $title; 

    function _construct() 
    { 
     echo "The constrcut is running..." . '<br>''; 
    } 
} 
$employee = new Employee(); 
?> 

第二款

<?php 
class Employee 
{ 
    protected $name; 
    protected $title; 

    function _construct() 
    { 
     echo "The constrcut is running..." . '<br>''; 
    } 
} 

class Manager extends Employee 
{ 

    function __construct() 
    { 
     parent:: _construct(); 
     echo "The Manager construct is running..."; 
    } 
} 
$employee = new Manager(); 
?> 
+7

的构造函数应该有两个下划线是一样的所有其他魔术方法的前缀。只有最后一个构造函数有两个下划线。 – andho

+0

@andho ??你的意思是? – Justin

+0

我在两个代码中都看到了synthax错误,这显然不是您的原始测试。这应该运行一次并输出正确的结果。你的问题必须在你不知道的地方。 – Havenard

回答

0

替换类Employee

function _construct() 
{ 
    echo "The constrcut is running..." . '<br>''; 
} 

带:

function __construct() 
{ 
    echo "The constrcut is running..." . '<br>''; 
} 

请注意双下划线(__)。


而且你有一个语法错误的位置:

echo "The constrcut is running..." . '<br>''; 
-------------------------------------------^ Why two 's? 
+3

对不起,但这个问题不值得一个答案。 – andho

+0

是的,我想是的。但只是为了伸出援助之手。 –

+0

对不起,这是我的错误输入 – Justin