我在yii框架中尝试在CController中添加set函数并尝试在控制器的对象中添加属性但是它给出了错误
我可以使用基类的__set函数来设置实例的属性。
Class Base {
public function __set() {
$this->$name = $value;
}
}
Class SubClass1 extends Base{
}
Class SubClass2 extends Base {
}
我创建SubClass1或SubClass2的实例,我想动态添加属性。可能吗。
答案 0 :(得分:0)
是的,除非财产是私人的
,否则你可以答案 1 :(得分:0)
是的,你可以将你的魔法功能放在你的班级结构中。即使您没有在类文件中定义,Magic函数也会正常调用。
因此,如果您不在类文件中创建__set(),则不会对其产生太大影响。但是,如果你想在对象下设置一些额外的东西,那么它会有所帮助。
另外,__ set()函数需要两个参数,$ name和$ value。请参考以下网址
此致
答案 2 :(得分:0)
您确实可以,以下内容将证明:
<?php
class Foo
{
private $vars = array();
public function __set($name, $value)
{
echo "Setting $name: $value<br />";
$this->vars[$name] = $value;
}
public function __get($name)
{
echo "Getting $name<br />";
return isset($this->vars[$name]) ? $this->vars[$name] : null;
}
}
class Bar extends Foo {}
$bar = new Bar();
$bar->baz = 'baz';
echo $bar->baz;
将输出:
设置baz:baz
获取baz
巴兹
答案 3 :(得分:-2)
class Base {
protected $data;
public function __construct() {
$this->someMethodBaseClass();
}
protected function someMethodBaseClass() {
$this->data = 123456;
}
}
class subclass1 extends Base{
public function __construct() {
parent::__construct();
}
public function getData() {
return $this->data;
}
}