难道我们不能为doctrine2实体类使用phpmagicgetter-setter,而不是为类的每个属性制作getter setter吗?
这是我为doctrine2编写的实体类,用于映射数据库中的表。
<?php
namespace Entities;
use Doctrine'ORM'Mapping AS ORM;
/**
* @ORM'Entity
*/
class blogs
{
/**
* @ORM'Id
* @ORM'Column(type="integer", length=11)
* @ORM'GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM'Column(type="string", length=1024, nullable=true)
*/
private $url;
/**
* @ORM'Column(type="string", length=512, nullable=false)
*/
private $title;
/**
* @ORM'Column(type="text", nullable=true)
*/
private $blog_data;
/**
* @ORM'OneToMany(targetEntity="Entities'likes", mappedBy="blogs")
*/
private $likeses;
/**
* @ORM'OneToMany(targetEntity="Entities'share", mappedBy="blogs")
*/
private $shares;
/**
* @ORM'OneToMany(targetEntity="Entities'comments", mappedBy="blogs")
*/
private $commentses;
/**
* @ORM'ManyToOne(targetEntity="Entities'ilook_user", inversedBy="blogses")
* @ORM'JoinColumn(name="blog_writer_id", referencedColumnName="id", nullable=false)
*/
private $ilook_user;
/**
* @ORM'ManyToOne(targetEntity="Entities'blog_categories", inversedBy="blogses")
* @ORM'JoinColumn(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 . "'n'n";
echo "<pre>'n";
$obj = new PropertyTest;
$obj->b = "Hello";
echo $obj->b . "'n'n";
?>
您可以在以下网址阅读更多信息:
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