Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在具有Doctrine2的Symfony2上,对象是否=实体?_Php_Object_Entity_Symfony_Doctrine Orm - Fatal编程技术网

Php 在具有Doctrine2的Symfony2上,对象是否=实体?

Php 在具有Doctrine2的Symfony2上,对象是否=实体?,php,object,entity,symfony,doctrine-orm,Php,Object,Entity,Symfony,Doctrine Orm,假设我有一个用户类: $user = new User(1); $user->setName('Bob'); // save "bob" to database with ID 1 $user->setGender('Male'); // save "male" to database with ID 1 echo $user->getName(); // display bob echo $user->getGender(); // display "male";

假设我有一个
用户
类:

$user = new User(1);
$user->setName('Bob'); // save "bob" to database with ID 1
$user->setGender('Male'); // save "male" to database with ID 1

echo $user->getName(); // display bob
echo $user->getGender(); // display "male";

echo $user->getDesignation() // display "Mr. Bob"
现在,在Symfony2中,使用Doctrine2时,
实体
似乎是一个用于与数据库链接的对象。因此我认为所有的
setName()
setGender()
getName()
&
getGender()
函数都应该放在Bundle的
Entity
目录下的文件中(因为这些函数更新或从数据库中选择数据)

但是
getDesignation()

在实体中放置一个与数据库完全没有链接的函数可以吗?这不是一个坏习惯吗

放一个与数据库完全没有链接的函数可以吗

是的,没关系。但仔细看,它仍然在某种程度上“链接”到数据库,因为它使用了最初来自持久层(数据库)的性别和姓名数据

这不是一个坏习惯吗


这一点都不坏,事实上这是非常有用的。它可以帮助您利用模型对象中的持久层,同时将代码与数据库访问分离。

如果您的页面始终以英语显示,如果您需要将网站翻译成另一种语言,也许您应该创建一个额外的类来处理Symfony转换器和实体,以便获得多语言标题。另一种更简单的方法是在单独的函数中仅返回人员标题“mr.”,如:

public function getDesignation() {
  if ($this->getGender() == 'Male') return "Mr." else return "Ms.";
}
因为您可以轻松地在模板{{entity.designation | trans}中进行转换

无论如何,我只是想贡献一点,但简短的回答是:是的,您可以使用实体来处理基本getter之外的其他时尚方法


问候

不错的练习-但是你每次都会回“先生”。。。
public function getDesignation() {
  if ($this->getGender() == 'Male') return "Mr." else return "Ms.";
}