如何在 php 中使用构造函数来初始化实例变量



我知道这是一个常见的问题,但我看到的问题(大约 10 个)比我更困惑。

我的问题作为注释包含在代码中。

我有一个包含三个字段的类

public class Model
{
public $prop1;
public $prop2;
public $prop3;
public function _construct($params)  // doubt 1: Do I have to pass an array to a constructor, can't I pass the parameters individually
{
// doubt 2: How to assign the value to the instance variables
}
}
$model = new AppModel($whatToPuthere); //doubt 3: How to provide the constructor parameters

正确的方法是:

public class Model
{
public $prop1;
public $prop2;
public $prop3;
public function __construct($prop1, $prop2, $prop3)  
{
$this->prop1 = $prop1; 
$this->prop2 = $prop2; 
$this->prop3 = $prop3; 
}
}
$model = new AppModel("prop1_value", "prop2_value", "prop3_value");

您非常接近,要访问当前实例变量,您需要使用$this.您还需要为构造方法使用 2 个下划线。除此之外,将其视为另一个函数。

class Model {
public $prop1;
public $prop2;
public $prop3;
public function __construct($prop1, $prop2, $prop3) {
$this->prop1 = $prop1;
$this->prop2 = $prop2;
$this->prop3 = $prop2;
}
}
$model = new AppModel("prop1", "prop2", "prop3");

由您决定什么对AppModel类用户更方便。下面是使用固定数量的属性的示例。

class Model
{
public $prop1;
public $prop2;
public $prop3;
public function __construct($prop1, $prop2, $prop3)
{
$this->prop1 = $prop1;
$this->prop2 = $prop2;
$this->prop3 = $prop3; 
}
}
$model = new AppModel('Property 1', 'Property 2', 'Property 3'); 

如果您打算使用动态数量的属性,则应考虑使用数组作为参数。

class Model
{
public $prop1;
public $prop2;
public $prop3;
public function __construct(array $properties)
{
$this->prop1 = $properties['prop1'];
$this->prop2 = $properties['prop2'];
$this->prop3 = $properties['prop3']; 
}
}
$model = new AppModel(
array('prop1' => 'Property 1', 'prop2' => 'Property 2', 'prop3' => 'Property 3')
);

最新更新