2012-05-18 80 views
0
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;PHP OOP是有辦法來自動設置這個變量

,這樣我就不必每次都輸入這個名字我添加了變數

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

+0

是的tks它的工作 – marboro

+0

很高興我可以幫助 –

+0

看看pls tks http://rizall.com/text.txt – marboro

0

我想我不明白你的問題,但我想你想使用的references operator

class MyClass { 
    protected $name; 

    public myfunction() { 
     $foo = $this->name; 
     $this->name = &$foo; 
     // now $foo is a reference to $this->name 
    } 
} 
0

嗯...我想你問到沒有如何明確地聲明屬性。在這種情況下,請執行以下操作:

for($i=0; $i<$num_fields; $i++) { 
    $column_name = mysql_field_name($result_set, $i); 
    $this->$column_name = ""; 
    } 

這會將所有列名稱作爲屬性添加到您的類中,默認情況下爲公共。然後你可以使用$ this-> md5,$ this-> credit等來訪問它們......

你應該看看PDO並返回行和對象並對其應用轉換... PDO具有獲取方法你指定一個類名並自動完成這類事情。我強烈建議不要創建自己的數據庫抽象庫或ORM,因爲已經有很好的庫。

+0

這實際上非常有幫助 – marboro

相關問題