Php 信条中的写作模式方法
我想通过在模型类定义中包含方法来封装特定于某些模型的功能。例如:Php 信条中的写作模式方法,php,orm,doctrine,Php,Orm,Doctrine,我想通过在模型类定义中包含方法来封装特定于某些模型的功能。例如: abstract class BaseUser extends DoctrineRecord { public function setTableDefinition(){ //etc. } public function setUp(){ //etc. } public function getName(){
abstract class BaseUser extends DoctrineRecord {
public function setTableDefinition(){
//etc.
}
public function setUp(){
//etc.
}
public function getName(){
return $this->name
}
}
class User extends BaseUser {
public function getWelcomeString() {
return 'Welcome, ' . $this->name . '!';
}
}
$this->name会引发错误,$name也会引发错误可以从这里访问模型属性吗?类是抽象的。您应该将方法添加到扩展了
BaseUser
的User
类中
[编辑]
您可以使用$this->property
访问子类中基类的属性。例如:
abstract class BaseUser extends DoctrineRecord {
public function setTableDefinition(){
//etc.
}
public function setUp(){
//etc.
}
public function getName(){
return $this->name
}
}
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
可以像任何人所期望的那样,使用$this->propertyName访问属性。我的问题是getProperty(在我的示例中是getName)是一个由条令框架自动创建的函数,当我试图创建自己的函数时,会产生冲突。我把名字改成了whatIsName(),一切正常。你说得对,谢谢。您知道如何从这些函数访问模型属性吗?谢谢你的帮助。@Justin:我已经用一个例子更新了我的答案。因为您是新来的,所以我会通过单击答案左侧的复选标记来提醒您接受最佳答案。再次感谢。不幸的是,这正是我一直在尝试的,但是抛出了一个错误,内容是:“未定义的属性:User::$name”。但是我确实正确地定义了这个列,因为$user->name正在按预期返回。抛出错误的只是$user->getName()。抱歉,“Undefined::Property”是一个解释程序警告,而不是错误。尽管如此,由于命名冲突(见下文),它仍然无法工作
$this->name
之后的code>只是问题中的一个输入错误?