• 技术文章 >后端开发 >PHP问题

    php中static、self、$this的区别有哪些?

    coldplay.xixicoldplay.xixi2020-07-01 16:44:37原创1170

    php中static、self、$this的区别有:1、【$this】表示对象的引用,写在类中的非静态方法中;2、self和this不同,它指向类本身,不指向任何实例化对象;3、static一般用来访问类中的静态变量和静态方法。

    php中static、self、$this的区别有:

    1、$this 表示对象的引用 $this写在类中的非静态方法中, 实例化该类,谁调用该方法(一般是对象调用)$this则表示该对象的引用。

    <?php
    class Person {
        public $name;
        public function getName() {
            echo $this->name;
        }
    }
    $p = new Person();
    $p2 = new Person();
    $p->name = "小红";
    $p2->name = "小明";
    $p->getName();  // 小红
    $p2->getName();  // 小明

    2、self 和 this 不同,它指向类本身,不指向任何实例化对象,一般用来访问类中的静态变量和静态方法,也是写在类中的方法。self写在哪个类中则表示该类的引用

    <?php
    class Person {
        public static $name = "小红";
        public static function getName() {
            echo self::$name;
        }
    }
    $p = new Person();
    $p2 = new Person();
    $p::getName();  // 小红
    $p2::getName();  // 小红
    $p::$name = "小明";
    $p::getName();  // 小明
    $p2::getName();  // 小明

    3、static 一般用来访问类中的静态变量和静态方法,也是写在类中的方法,也是那个类调用该方法static就表示那个类(绑定那个类)

    <?php
    class A {
        public function say() {
            echo "Hello";
        }
        public function saySelf() {
           //static 和 self 可以调用非静态方法  不能调用非静态属性  静态方法中不能有$this
          // static 和 self 可以写在非静态的方法中 ,可以使用对象调用
            self::say();
        }
        public function sayStatic() {
            static::say();
        }
    }
    class B extends A {
        public function say() {
            echo "World";
        }
    }
    $b = new B();
    $b->say();  // World
    $b->saySelf();  // Hello
    $b->sayStatic();  // World

    相关学习推荐:PHP编程从入门到精通

    以上就是php中static、self、$this的区别有哪些?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php static self $this
    上一篇:php中MySQL、MySQLi、PDO的区别有哪些? 下一篇:php require_once与include的区别有哪些?
    大前端线上培训班

    相关文章推荐

    • 深入php self与$this的详解• php self,$this,const,static,-&amp;gt;的使用_PHP教程• php $this到底是什么• php static 变量使用的例子

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网