暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Trait

半度爱微凉 2021-09-22
239


php是一种单继承语言,为了解除这个限制,从5.4开始,php引入了trait。trait是为单继承语言而准备的一种代码复用机制。


    /**
    * 当我们数据库的数据不想删除的时候,就可以使用软删除方法,就是修改数据的显示状态,并不是真实的删除数据
    * Trait SoftDelete
    */
    trait SoftDelete
    {
    public function delete()
    {
    //软删除
    return $sql = "update users set delete_time='".time()."' where id=1";
    }
    }
    trait SoftDelete1
    {
    public function delete()
    {
    //软删除
    return $sql = "update users set delete_time='".time()."' where id=2";
    }
    }
    // 模型类
    class Model
    {
    //真实删除,数据将不存在
    public function delete()
    {
    return $sql = "delete from users where id=1";
    }
    }


    class Db extends Model
    {
    //在类中引入trait
    use SoftDelete;


    //引入多个trait,当两个trait中有相同方法时,需要用insteadof来指定需要使用哪一个,下面的意思是,用SoftDelete1中的delete方法代替SoftDelete中的delete方法
    /*use SoftDelete,SoftDelete1{
    SoftDelete1::delete insteadof SoftDelete;
    }*/


    }


    $db = new Db();
    echo $db->delete();
    /**
    * 输出“update users set delete_time='1632269700' where id=1”,Trait里的方法覆盖了模型Model的方法,需要注意一点,如果Db类里也有delete方法,会覆盖Trait里的delete方法。
    * 当前类中的方法优先级是最高的。
    */

    以上是本文的全部内容,有问题可以在评论区留言交流,大家可以分享关注。

    文章转载自半度爱微凉,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论