2010-07-28 2 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

ответ

1

Свойство может получить доступ с помощью $ this- > propertyName, как и ожидалось. Моя проблема заключалась в том, что getProperty (getName в моем примере) - это функция, которая автоматически создает структуру Doctrine, создавая конфликт, когда я пытался создать свою собственную. Я изменил имя на whatIsName(), и все сработало.

0

Категории Basexxx являются абстрактными. Вы должны добавить свой метод к классу User, который расширяет BaseUser.

[Edit] Вы можете получить доступ к свойствам базового класса в классе ребенка с помощью $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

+0

@ Justin: Я обновил свой ответ на примере. Поскольку вы новичок в SO, я напомню, что вы приняли лучший ответ, щелкнув галочку слева от ответа. – BenV

+0

Еще раз спасибо. К сожалению, это именно то, что я пытался, но возникает ошибка, которая гласит: «Undefined property: User :: $ name». Но я определенно правильно определяю столбцы, потому что $ user-> name возвращается, как ожидалось. Это просто $ user-> getName(), который выдает ошибку. – Justin

Смежные вопросы