2010-07-28 82 views
2

我想通過在模型類定義中包含方法來封裝特定於某些模型的功能。因此,例如:在Doctrine中編寫模型方法

abstract class BaseUser extends DoctrineRecord {  

    public function setTableDefinition(){ 
     //etc. 
    } 

    public function setUp(){ 
     //etc. 
    } 

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

$ this-> name會拋出錯誤,就像$ name一樣。 是否可以從這裏訪問模型屬性?

+0

我認爲在'$ this-> name'之後缺少';'只是一個錯字嗎? – BenV 2010-07-28 23:22:14

回答

1

屬性可以使用$這個 - 訪問> propertyName像任何人所期望的那樣。我的問題是getProperty(我的例子中的getName)是Doctrine框架自動創建的函數,當我嘗試創建自己的時候創建了一個衝突。我將名稱更改爲whatIsName()和一切工作。

0

Basexxx類是抽象的。您應該將您的方法添加到User類中,該類擴展了BaseUser

[編輯] 可以使用$this->property訪問你的子類的基類的屬性。例如:

class User extends BaseUser { 
    public function getWelcomeString() { 
     return 'Welcome, ' . $this->name . '!'; 
    } 
} 

然後,您可以從您的chilod類的實例訪問您的自定義功能,除了所有的基類屬性:

$user = new User(); 
//Hydrate object from database 
echo $user->getWelcomeString();  // implemented in your child class 
echo 'Your name is ' . $user->name; // implemented in the base class 
+0

你是對的 - 謝謝。你知道我如何從這些函數訪問模型屬性?謝謝您的幫助。 – Justin 2010-07-28 22:36:23

+0

@Justin:我用一個例子更新了我的答案。由於您是新手,因此我會提醒您通過點擊答案左側的複選標記來接受最佳答案。 – BenV 2010-07-28 23:03:07

+0

再次感謝。不幸的是,這正是我一直在嘗試的,但是會拋出一個錯誤:「Undefined property:User :: $ name」。 但我明確地定義了列,因爲$ user-> name按預期返回。這只是$ user-> getName()引發錯誤。 – Justin 2010-07-28 23:13:17