2013-03-30 57 views
1

我有下面的代碼的一個基本問題:PHP ORM如何設置ID在構造

<?php 

interface UserInterface 
{ 
    public function getId(); 
    public function getName(); 
} 

class User implements UserInterface 
{ 
    private $_id; 
    private $_name; 

    public function __construct($id, $name) 
    { 
     $this->_id = $id; 
     $this->_name = $name; 
    } 

    public function getId() 
    { 
     return $this->_id; 
    } 

    public function getName() 
    { 
     return $this->_name; 
    } 
} 

class UserMapper 
{ 
    public function insert(UserInterface $user) 
    { 
     ... insertion code 
    } 
} 

?> 

的UserMapper的插入方法需要一個的UserInterface對象。所以我創建一個:

<?php 

$user = new User(1, "Chris"); 
$userMapper = new UserMapper(); 
$userMapper->insert($user); 

?> 

我的問題是,用戶的ID是從數據庫中插入對象之後到來的自動遞增值。但是對象的構造函數迫使我定義一個id,因爲如果沒有id,對象將不會完整。如何解決這個普遍問題?

要將id作爲第二個參數傳遞給構造函數,默認值不是一個選項,因爲在我的理解中,如果沒有id,對象將是不完整的。

感謝您的幫助。

回答

1

你可以通過null

​​

$ _id不檢查一個有效的整數,並與null你知道,這種模式有沒有有效的身份證呢。

+0

是的,答案很簡單,但你可能是對的。謝謝。 – cwo