首页 > 学习中心 > 开发技术 > PHP

文档大纲

    PHP中self和this的用法区别

    public function scopeVideoGroup(Query $query, int $wxappId): Query
        {
            return $query->where('wxapp_id', $wxappId)
                ->where('group_type', self::GROUP_TYPE_VIDEO)
                ->where('is_delete', 0);
        }
    

    1. self 是什么

    self 代表当前这个类本身VideoGroup 模型类),是类内部访问类常量、静态属性、静态方法的关键字。

    $this 区分开(重点)

    • $this:指向实例对象,只能在普通成员方法里用,访问实例属性;
    • self:指向类本身,访问类常量 / static 静态变量 / 静态方法。

    2. self::GROUP_TYPE_VIDEO 拆解

    const GROUP_TYPE_VIDEO = 'video';
    

    这行是类常量,属于类,不属于某个实例。

    • GROUP_TYPE_VIDEO:常量名;
    • :::范围解析操作符,用来取类的常量/静态成员;
    • self = 当前 VideoGroup 类。

    等价完整写法:

    VideoGroup::GROUP_TYPE_VIDEO
    

    但如果类名改了(比如以后重命名 VideoGroup),硬写类名要全部改;用 self 不用改,自动指向当前类。

    3. 为什么这里不能用 $this::GROUP_TYPE_VIDEO

    常量是属于类的,不是属于某个对象实例:

    • $this 是实例,$this::常量 语法虽不报错,但语义不规范;
    • 规范:访问类常量一律用 self::

    4. 补充对比示例

    class VideoGroup
    {
        // 类常量(归属于类)
        const GROUP_TYPE_VIDEO = 'video';
    
        // 实例属性(归属于对象)
        public string $group_name;
    
        public function scopeVideoGroup(Query $query, int $wxappId): Query
        {
            // 取当前类的常量 → self::
            echo self::GROUP_TYPE_VIDEO;
    
            // 取当前对象的实例属性 → $this->
            echo $this->group_name;
    
            return $query;
        }
    }
    

    5. 拓展:另外两个同类关键字

    1. self:当前类;
    2. static:延迟静态绑定(继承场景用,子类重写常量时会取子类的值);
    3. 类名:::硬编码指定某个类。

    简单场景区分

    • 单纯本类内部读常量:用 self::
    • 有继承、子类会重写常量:用 static::
    • 固定访问其他类常量:OtherModel::XXX

    推荐商品

    更多
    来团GEO-AI搜索优化系统 用AI打造企业品牌

    来团GEO-AI搜索优化系统 用AI打造企业品牌

    来团科技GEO优化&AI搜索优化系统,是通过大模型内容投喂+训练,将企业品牌及产品信息在多平台AI生成的答案中获取优先展现,更精准触达潜在目标客户,让企业品牌出现在AI搜索里。让客户一搜就看到你,实现一问就有你,一查就信你,一看就找你的营销效果。

    来团智慧商业小程序零代码开发平台 多行业适用

    来团智慧商业小程序零代码开发平台 多行业适用

    来团智慧商业小程序零代码开发平台,多行业适配。无需代码,拖拽式设计,轻松打造订货商城、会员制商城、分销商城及小程序官网。不仅能满足通用需求,还支持定制化,从页面布局到功能模块,随心定制,助您快速搭建专属商业小程序,抢占市场先机。

    微名通名片 VIP年卡会员 | SVIP永久会员

    微名通名片 VIP年卡会员 | SVIP永久会员

    来团科技微名通不止是电子名片,更是你的商业连接器。比起传统名片,它更像你的 “迷你商业工具”:信息多、好携带、能互动,还不浪费纸张。不管是跑业务、拓人脉,还是展示企业,一张「微名通」电子名片,就能帮你把商机揣在手机里。

    来团LTCRM客户管理系统 可独立部署

    来团LTCRM客户管理系统 可独立部署

    来团科技CRM客户管理系统,帮你把 “线索→成交→回款” 全流程管明白。这就是一套 “让销售省心、老板放心” 的客户管理工具,从获客到回款,帮你把生意攥在手里。

    大纲

    文档目录

      联系我们
      联系方式
      • 官方服务热线:17721141027
      • 邮箱:kf@ilaituan.com
      • QQ:20262336
      扫码添加客服
      微信