难道我们不能为doctrine2实体类使用phpmagicgetter-setter,而不是为类的每个属性制作getter setter吗?
这是我为doctrine2编写的实体类,用于映射数据库中的表。
<?php
namespace Entities;
use DoctrineORMMapping AS ORM;
/**
* @ORMEntity
*/
class blogs
{
/**
* @ORMId
* @ORMColumn(type="integer", length=11)
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORMColumn(type="string", length=1024, nullable=true)
*/
private $url;
/**
* @ORMColumn(type="string", length=512, nullable=false)
*/
private $title;
/**
* @ORMColumn(type="text", nullable=true)
*/
private $blog_data;
/**
* @ORMOneToMany(targetEntity="Entitieslikes", mappedBy="blogs")
*/
private $likeses;
/**
* @ORMOneToMany(targetEntity="Entitiesshare", mappedBy="blogs")
*/
private $shares;
/**
* @ORMOneToMany(targetEntity="Entitiescomments", mappedBy="blogs")
*/
private $commentses;
/**
* @ORMManyToOne(targetEntity="Entitiesilook_user", inversedBy="blogses")
* @ORMJoinColumn(name="blog_writer_id", referencedColumnName="id", nullable=false)
*/
private $ilook_user;
/**
* @ORMManyToOne(targetEntity="Entitiesblog_categories", inversedBy="blogses")
* @ORMJoinColumn(name="blog_categories_id", referencedColumnName="id", nullable=false)
*/
private $blog_categories;
public function setId($id){
$this->id = $id;
}
public function getId(){
return $this->id;
}
public function setUrl($url){
$this->url=$url;
}
public function getUrl(){
return $this->url;
}
public function setTitle($title){
$this->title = $title;
}
public function getTitle(){
return $this->title;
}
public function setBlog_data($blog_data){
$this->blog_data = $blog_data;
}
public function getBlog_data(){
return $this->blog_data;
}
public function setLikeses($likeses){
$this->likeses=$likeses;
}
public function getLikeses(){
return $this->likeses;
}
public function setShares($shares){
$this->shares = $shares;
}
public function getShares(){
return $this->shares;
}
public function setCommentses($commentses){
$this->commentses = $commentses;
}
public function getCommentses(){
return $this->commentses;
}
public function setIlook_user($ilook_user){
$this->ilook_user = $ilook_user;
}
public function getIlook_user(){
return $this->ilook_user;
}
public function setBlog_categories($blog_categories){
$this->blog_categories = $blog_categories;
}
public function getBlog_categories(){
return $this->blog_categories;
}
}
使用magics方法__set
和__get
:查看此示例
<?php
class PropertyTest
{
private $a, $b;
public function __set($name, $value)
{
echo "Set '$name' to '$value'n";
$this->$name = $value;
}
public function __get($name)
{
echo "Get $name n";
return $this->$name;
}
}
echo "<pre>n";
$obj = new PropertyTest;
$obj->a = 1;
echo $obj->a . "nn";
echo "<pre>n";
$obj = new PropertyTest;
$obj->b = "Hello";
echo $obj->b . "nn";
?>
您可以在以下网址阅读更多信息:
http://php.net/manual/en/language.oop5.overloading.php#object.set
使用魔术方法__call
:与其他示例一起编辑
<?php
class Called {
private $Id, $Name;
public function __call($name, $arguments) {
$action = substr($name, 0, 3);
$field = substr($name, 3);
if($action == 'set') {
$this->$field = $arguments[0];
}
if($action == 'get') {
return $this->$field;
}
}
}
$obj = new Called();
$obj->setId(4);
echo "<br/>n";
echo $obj->getId();
echo "<br/>n";
$obj->setName('Peter');
echo "<br/>n";
echo $obj->getName();
?>
您可以在以下网址阅读更多信息:
http://php.net/manual/en/language.oop5.overloading.php#object.call