2016-05-16 61 views
3
初始化变量构造

我写这个简单的代码,不知道用什么构造的问题是:如何在PHP

class Animal { 
    public $_type; 
    public $_breed; 

    public function __construct ($t, $b) { 
     echo "i have initialized<br/>"; 

     $this ->_type = $t; 
     $this ->_breed = $b; 
     echo "type is " .$_type. "<br/>"; 

     echo "breed is " .$_breed. "<br/>"; 
    } 

    public function __destruct() { 
     echo "i am dying"; 
    } 
} 

$dog = new Animal("Dog", "Pug"); 
+1

那么你面临什么问题? – Ali

+1

在构造函数中进行echo操作时,您必须访问像这样的'$ this - > _ type'这样的变量。 – prava

+0

在echo $ this - > _ breed中使用,而初始化 – splash58

回答

2

试试这个(注意回声线)使用方法:

class Animal { 
    public $_type; 
    public $_breed; 

    public function __construct ($t, $b) { 
     echo "i have initialized<br/>"; 

     $this->_type = $t; 
     $this->_breed = $b; 

     //You have to use '$this' keyword to access 
     //class attibutes: 
     echo "type is " . $this->_type . "<br/>"; 
     echo "breed is " . $this->_breed . "<br/>"; 
    } 

    public function __destruct() { 
     echo "i am dying"; 
    } 
} 
+3

解释为什么它不起作用,你做了什么使它工作。 –

+0

@ SverriM.Olsen,我首先为OP的问题添加了我的评论。希望OP能做到这一点。但是,无论如何,谢谢你让我知道:) – prava

+4

答案应该独立。你不应该在其他地方四处寻找意见,找出发生了什么事情。将它添加到问题中需要大致相同的时间,因为它已经带您回复我。 –

4

为什么你有$this后的空间?删除空间。
另外,调用变量时添加$this

class Animal { 
    public $_type; 
    public $_breed; 

    public function __construct ($t, $b) { 
     echo "i have initialized<br/>"; 

     $this->_type = $t; // <-- remove space 
     $this->_breed = $b; // <-- remove space 
     echo "type is " .$this->_type. "<br/>"; // <-- add $this 

     echo "breed is " .$this->_breed. "<br/>"; // <-- add $this 
    } 

    public function __destruct() { 
     echo "i am dying"; 
    } 
} 
+1

有没有关于$ this –

+0

之后的空间是否可以解释为什么在'$ this'之后删除空格,因为有时候我在$ this后面的代码中也有空间,但是我没有遇到任何问题 –

+0

不,它不是打印变量值 –

1

$ _type和$ _breed是类的变量,所以你需要使用this关键字

echo "type is " .$this->_type. "<br/>"; 
    echo "breed is " .$this->_breed. "<br/>"; 
3

要初始化他们很好,但检索他们错了...

由于$_type$_breed对象级别的作用域,你需要告诉PHP什么范围你在引用它们。

因此,与其

echo $_breed; 

你需要

echo $this->_breed; 

在一个侧面说明,现在在变量名前加上_这是非常奇怪的做法,如果它们是公共变量,则更是如此。这可能会混淆其他开发人员使用您的代码。

1

虽然这不违反PHP语法,我认为,这两条线

echo "type is " .$dog->_type. "<br/>"; 
echo "breed is " .$dog->_breed. "<br/>"; 

不能放在__construct()而不是使用这个类外,

这样,

class Animal { 
    public $_type; 
    public $_breed; 

    public function __construct ($t, $b) { 
    $this ->_type = $t; 
    $this ->_breed = $b; 
    } 
    public function __destruct() { 
     echo "i am dying"; 
    } 
} 

$dog = new Animal("Dog", "Pug"); 
echo "i have initialized<br/>"; 
echo "type is " .$dog->_type. "<br/>"; 
echo "breed is " .$dog->_breed. "<br/>"; 
+0

好的,谢谢你fil –

+0

如果你投票给我, – Fil