如何从两个源中的一个设置对象的值

时间:2011-12-11 01:53:50

标签: php oop

现在我正试图解决处理数据的问题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获得,则用户已经提交了主要的via表格。做这个的最好方式是什么?它是一个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";
    }
}

?>

1 个答案:

答案 0 :(得分:0)

你的目标正在努力承担比应有的更多的责任。您的用户对象应该只管理与给定用户有关的数据,它不应该尝试实现获取该数据的各种方法。

正确的方法是让一个类从源获取数据并以标准格式呈现给您的用户类使用。这将管理用户的任务与将数据导入用户类的任务分离开来,并被认为是更好的OOP实践。