2011-12-11 45 views
-2

現在我正試圖解決處理數據的問題:a)來自Facebook Graph API或b)由用戶通過表單提交手動提供。爲了保持它的簡單,這是我當前如何建立類,不佔手動表單提交:如何從兩個來源之一設置對象的值

class user { 

public $collegemajor; 

public function __construct($collegemajor) 

$this->collegemajor = $collegemajor; 

$collegemajor = isset($user_profile['education'][0]['concentration'][0]['name']) ? $user_profile['education'][0]['concentration'][0]['name'] : null ; 
$objUser = new user ($collegemajor); 

} 

這裏大致就是我想要做的事。請記住,我還沒有在應用程序中使用getter或setter方法。目標是將$ collegemajor設置爲Graph API值(如果可用)或者如果API數據不可用,則將其設置爲發佈的表單提交。假設數據不可用於API,則用戶已經通過表單提交了主要數據。做這個的最好方式是什麼?它是一個getter和setter方法嗎?如果是這樣,我就不知道如何構建它。如何將它添加到該行:

$collegemajor = isset($user_profile['education'][0]['concentration'][0]['name']) ? $user_profile['education'][0]['concentration'][0]['name'] : null ; 

表單提交的值,如果存在的話,會是這樣的:

$_POST['major']; 

這裏是我的下面失敗的嘗試。它沒有按計劃返回表單提交值。任何幫助將不勝感激:

class user { 

public $collegemajor; 

public function __set($collegemajor, $value) { 
     if (isset($this->collegemajor)) { 
      return $this->collegemajor; 
     } else { 
      return $_POST['major']; 
     } 
    } 

public function __construct($collegemajor) { 

$this->collegemajor = $collegemajor; 

} 

public function echos() { 
    echo "$this->collegemajor"; 
    } 
} 

?> 

回答

0

你的目標是努力承擔更多的責任比它應該。您的用戶對象應該只管理與給定用戶有關的數據,但不應嘗試實現獲取該數據的各種方式。

正確的方法是從類中提取數據並以標準化格式將其呈現給您的用戶類使用。這將管理用戶的任務從獲取數據的任務分解到用戶類中,並被認爲是更好的面向對象操作。

相關問題