如何为类的每个属性设置getter和setter



难道我们不能为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

最新更新