class Student{
$db_fields = array('id','firstname','lastname')
}
有没有办法将$ db_fields数组设置为公共变量/属性而无需手动输入:
class Student{
$db_fields = array('id','firstname','lastname')
public $id;
public $firsname;
public $last;
}
我正在尝试使用foreach设置它,但我无法完成它。
答案 0 :(得分:1)
class Student{
public $db_fields;
public $id;
public $firsname;
public $last;
public function __construct($data){
$this->db_fields = $data;
}
}
$students = new Student(array('id','firstname','lastname'));
你可以这样设置.. 或者这样......
class Student{
public $db_fields;
public $id;
public $firsname;
public $last;
public function set_db_fields($data){
$this->db_fields = $data;
}
}
$students = new Student();
$students->set_db_fields(array('id','firstname','lastname'));
这个想法是当你调用该类来设置那些具有某些功能的变量时。 第一种方式是使用构造函数,第二种方法是仅为此编写1函数..
第三种方式是@PLB用魔术函数重播。
答案 1 :(得分:0)
是的,您可以在班级Student
中使用魔术方法__get
和__set
(这些方法用于访问实例的不可访问变量。您可以在文档中获取更多信息)。
public function __get($name) {
return $this->{$name};
}
public function __set($name, $value){
$this->{$name} = $value;
}
现在你可以使用它了:
$obj = new Student();
$obj->db_fields = array(1,2,3); //Assign private variable.
var_dump($obj->db_fields); //Get private variable.
答案 2 :(得分:0)
访问数组变量的唯一方法是通过数组(据我所知):
$db_fields = array('id' => 5,'firstname' => 'Paul', 'lastname' => 'Doe');
echo $db_fields->id; // would print 5.
你想说的是:
$db_fields = array('id' => 5,'firstname' => 'Paul', 'lastname' => 'Doe');
echo $id; // would print 5 but that is not possible
这个工作的唯一实例是你正在谈论的数组是$ _POST和带有寄存器全局的$ _GET,但据我所知,不可能用任何数组做这个(事实上它通常不是建议即使使用$ _POST和$ _GET数组也要这样做。
修改强>
您实际上可以在数组中使用extract()函数。
$db_fields = array('id' => 5,'firstname' => 'Paul', 'lastname' => 'Doe');
extract($db_fields);
echo $id; // if I'm not mistaken, that should work