class User extends DatabaseObject {
protected static $table_name='users';
protected static $db_fields = array();
public function __construct() {
// Get columns from table
global $database;
$result_set = $database->query("SELECT * FROM ".self::$table_name." LIMIT 1");
$num_fields = mysql_num_fields($result_set);
for($i=0; $i<$num_fields; $i++) {
$column_name = mysql_field_name($result_set, $i);
// Set column names as variables
self::$db_fields[] = $column_name; // THIS WORKS
$this->{$column_name}; // THIS IS PROBLEMATIC!
}
}
例如$name = pulic $wherever;
所以我可以打电话,例如,wherever->wherever
;
因此,每次添加变量
时,我都不必输入此名称public $md5;
public $credit;
public $pontaria_time;
public $Credits;
public $airoplayne;
public $city_id;
public $prisao_time;
public $crime2;
public $banck_time;
答案 0 :(得分:1)
$this->{$column_name}; // THIS IS PROBLEMATIC!
您需要使用
$this->$column_name = $column_value
或者您可以在$ db_fields字段中写入所有列并添加
public function __get($name) {}
(阅读magic methods)
答案 1 :(得分:0)
我想我不明白你的问题,但我认为你想使用references operator:
class MyClass {
protected $name;
public myfunction() {
$foo = $this->name;
$this->name = &$foo;
// now $foo is a reference to $this->name
}
}
答案 2 :(得分:0)
for($i=0; $i<$num_fields; $i++) {
$column_name = mysql_field_name($result_set, $i);
$this->$column_name = "";
}
这会将所有列名称作为属性添加到您的类中,默认情况下为public。然后你可以使用$ this-&gt; md5,$ this-&gt; credit等来访问它们。
您应该查看PDO并返回行和对象并对其应用强制转换... PDO具有获取方法,您可以在其中指定类名并自动执行此类操作。我强烈建议不要创建自己的数据库抽象库或ORM,因为已经有非常好的。