static::和self::有什么区别吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

5回答
好帮手慕小尤 2020-08-13 17:51:16

同学你好,1. check()方法用于检查服务器环境中gd库。当_check为true时,则代表gd库是没有问题的。所以刚开始使用static: :$_check进行判断,当static: :$_check为true,就可以直接跳出。

2. 而 self:: 是对当前类的静态引用(self就是写在哪个类里面,,实际调用的就是这个类)。所以当gd库一切正常时, 为当前类的$_check赋值为true。则当通过其他实例化对象调用时,则此时$_check值为true。

祝学习愉快!

好帮手慕小尤 2020-08-13 17:04:43

同学你好, self:: 是对当前类的静态引用,在课程逻辑中需要调用当前类的静态引用。所以使用了self::。

注:同学可根据代码逻辑与static::和self::含义一起查看,可能更有利于理解。

祝学习愉快!

  • 提问者 慕仙0328516 #1
    我明白了static::和self::含义,就是想不明白最后为什么用self来设置,不应该是使用static给这个对象设置$_check吗,使用self是说给全部的这个类或继承的都设置true了吧
    2020-08-13 17:08:39
好帮手慕小尤 2020-08-13 13:51:03

同学你好,static::变量名就是调用当前对象所属类中的变量。因需要判断当前对象的$_check变量,所以在课程中使用static: :$_check,通过实例化的对象调用。

祝学习愉快!

  • 提问者 慕仙0328516 #1
    那为什么最后设置的时候又使用self了
    2020-08-13 15:20:30
好帮手慕小尤 2019-07-27 18:04:34

同学你好,简单通俗的来说,static代表使用的这个类,就是你在父类里写的static,然后被子类覆盖,使用的就是子类的方法或属性。

<?php
class Person
{
    public static function name()
    {
        echo "person";
        echo "<br />";
    }
    public static function callstatic()
    {
        static::name();
    }
}
 
class Man extends Person
{
    public static function name()
    {
        echo "man";
        echo "<br />";
    }
}
 
Man::callstatic();  // output: man

    static执行的是实例的当前类,也就是你引用出来的是哪个类,那么用的就是哪个类中的方法或者属性所以static调用的static是通过Man这个类调用的 所以用的是man中的name  最后输出man。

祝学习愉快!

  • 提问者 慕仙0328516 #1
    那为什么视频中使用static呢
    2020-08-13 10:30:21
好帮手慕小尤 2019-07-27 17:07:45

同学你好,使用 self:: 是对当前类的静态引用,取决于定义当前方法所在的类(self 执行的是self自身所在的类)。而使用 static:: 是执行的是实例的当前类,也就是你引用出来的是哪个类。

祝学习愉快!

  • 提问者 慕仙0328516 #1
    不是很明白你所说的static::
    2019-07-27 17:08:53
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师