php中self关键字的用法是什么-PHP问题

资源魔 33 0

php中self要害字的用法是:一、代替类名,援用以后类的动态成员变量以及动态函数;二、克制多态行为,援用以后类的函数而非子类中笼罩的完成。self老是指向以后类(及类实例)。

用法:

self老是指向“以后类(及类实例)”。

具体引见:

一、代替类名,援用以后类的动态成员变量以及动态函数;

二、克制多态行为,援用以后类的函数而非子类中笼罩的完成;

上面咱们经过实例来与 parent 、 static 和 this进行比照。

parent

self 与 parent 的区别比拟容易: parent 援用父类/基类被隐盖的办法(或变量), self则援用本身办法(或变量)。例如结构函数中挪用父类结构函数:

class Base {
    public function __construct() {
        echo "Base contructor!", PHP_EOL;
    }
}

class Child {
    public function __construct() {
        parent::__construct();
        echo "Child contructor!", PHP_EOL;
    }
}

new Child;
// 输入:
// Base contructor!
// Child contructor!

static

static 惯例用处是润饰函数或变量使其成为类函数以及类变量,也能够润饰函数内变量延伸其生命周期至整个使用顺序的生命周期。然而其与 self 联系关系上是PHP 5.3以来引入的新用处:动态提早绑定。

有了 static 的动态提早绑定性能,能够正在运转时静态确定归属的类。例如:

class Base {
    public function __construct() {
        echo "Base constructor!", PHP_EOL;
    }

    public static function getSelf() {
        return new self();
    }

    public static function getInstance() {
        return new static();
    }

    public function selfFoo() {
        return self::foo();
    }

    public function staticFoo() {
        return static::foo();
    }

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

    public function foo() {
        echo  "Base Foo!", PHP_EOL;
    }
}

class Child extends Base {
    public function __construct() {
        echo "Child constructor!", PHP_EOL;
    }

    public function foo() {
        echo "Child Foo!", PHP_EOL;
    }
}

$base = Child::getSelf();
$child = Child::getInstance();

$child->selfFoo();
$child->staticFoo();
$child->thisFoo();

顺序输入后果以下:

0fc8f7e016a74e4527f97cb40241412.png

正在函数援用上, self 与 static 的区分是:关于动态成员函数, self 指向代码以后类, static 指向挪用类;关于非动态成员函数, self 克制多态,指向以后类的成员函数, static 同等于 this ,静态指向挪用类的函数。

更多相干常识,能够拜访资源魔。

以上就是php中self要害字的用法是甚么的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 self php故障解决 php使用问题

抱歉,评论功能暂时关闭!