我试图了解如何有效地创建新的类对象并直接设置变量。
我有一个班级:
class element_model
{
public $sType;
public $properties;
}
我有一个控制器,其中定义了以下功能:
public function create_element($sType, $properties)
{
$oElement_model = new element_model($sType, $properties);
return new element_model($sType, $properties);
}
但是这不会返回一个设置了属性的新element_model,它只返回一个空对象。 但是,它不会引发错误。
上述功能不起作用的原因是什么?
答案 0 :(得分:1)
你必须传递给类的constructor,在PHP中你应该在类__construct
中有一个方法:
class element_model
{
public $sType;
public $properties;
public function __construct($type, $property)
{
$this->sType = $type;
$this->properties = $property;
}
}
然后你可以访问它们(注意变量是公共的)
$elem = new element_model($sType, $properties);
$elem->sType;
虽然在某些情况下封装vars更好(声明它们私有):
class element_model
{
private $sType;
private $properties;
public function __construct($type, $property)
{
$this->sType = $type;
$this->properties = $property;
}
public function getType()
{
return $this->sType;
}
public function getProperty()
{
return $this->properties;
}
}
然后您可以通过 getter
访问变量$elem = new element_model($sType, $properties);
$elem->getType(); //and
$elem->getProperty();
答案 1 :(得分:0)
您必须在类中创建一个__construct函数,该函数接受参数并设置变量。像这样:
class element_model{
.
.
.
public function __construct($type,$properties)
{
$this->sType = $type;
$this->properties = $properties;
}
}
创建对象时将调用__construct函数。
但是如果你想在编程中变得更加酷,只需将属性定义为私有,并创建getter和setter函数来访问对象的变量
private $sType;
public function getSType(){
return $this->sType;
}
public function setSType($value){
$this->sType = $value;
}