$this->;之间有什么不同;和父::在OOP PHP中?

$this->;之间有什么不同;和父::在OOP PHP中?,php,oop,inheritance,super,Php,Oop,Inheritance,Super,我编写这样的代码是为了给你一个例子 这是使用“$This->” 这是使用父项:: <?php class A{ public function example(){ echo "A"; } } class B extends A{ public function example2(){ parent::example(); } } $b = new B(); echo $b->example2(); ?>

我编写这样的代码是为了给你一个例子

这是使用“$This->”


这是使用父项::

<?php
class A{
    public function example(){
        echo "A";
    }
}

class B extends A{
    public function example2(){
        parent::example();
    }
}

$b = new B();

echo $b->example2();
?>


在OOP PHP中,$this->和parent::之间有什么不同?

不同之处在于,您可以访问基类的函数,而不是当前实现的函数

class A {
    public function example() {
        echo "A";
    }

    public function foo() {
        $this->example();
    }
}

class B extends A {
    public function example() {
        echo "B";
    }

    public function bar() {
        parent::example();
    }
}
下面是一些测试:

$a=new A();
$a->example(); // echos A
$a->foo();     // echos A

$b=new B();
$b->example(); // echos B
$b->foo();     // echos B
$b->bar();     // echos A
parent::example()
调用父类方法,其中
$this->example()
调用当前类方法

在您的示例中没有区别,因为类
B
不会重写
example()
方法。写这样的东西是很常见的(也许这会帮助你更好地理解这个概念):


parent::
将调用父对象的方法或属性。但是,由于这引用的是类而不是任何类型的实例,因此只能调用静态方法或属性。
$this->
指的是您调用它的对象的当前实例

您还可以引用
self::
,它引用了对象或静态方法中的当前类(同样,这里没有涉及实例)。

简单地说

$this是一个实例引用,因此无论何时使用$this它都会开始引用当前的类方法和属性


parent是一个父引用,可用于访问父类属性和方法。

parent::
它不仅用于调用静态方法。parent是一个父引用,可用于访问父类属性和方法。。只要他们受到保护或公开;)
$a=new A();
$a->example(); // echos A
$a->foo();     // echos A

$b=new B();
$b->example(); // echos B
$b->foo();     // echos B
$b->bar();     // echos A
    class A {

       public function example(){
           echo 'A';
       }
    }

    class B extends A {

       public function example(){
           echo 'B';
       }

       public function example2(){
          $this->example();
       }


       public function example3() {
          parent::example();
       }
   }

$b = new B();

$b->example2();//print B

$b->example3();//print A