PHP延迟静态绑定static详解

小云云
Libérer: 2023-03-22 10:02:01
original
1225 Les gens l'ont consulté

在旧版PHP中返回本类的一个实例使用的return new self(); 但是这个方法有很大的弊端,就是self指的是解析上下文而不是调用的上下文。本文主要和大家分享PHP延迟静态绑定static详解,希望能帮助到大家。

abstract class father { public static function create() { return new self(); } } class son1 extends father { } son1::create();
Copier après la connexion

也就是说上述代码中子类调用create()方法其实是返回一个父类的实例,因为self指向它定义的地方而不是调用的地方,并且father类是抽象类,则这段代码会报一个致命错误。

在PHP5.3以后引入了延迟静态绑定,使用static关键字。

abstract class father { public static function create() { return new static(); } } class son1 extends father { } son1::create();
Copier après la connexion

将self改为static就能正常执行,因为static指向被调用的类而不是定义的类。

我们还可以使用static作为静态方法的标识符,甚至是从非静态上下文中调用。这个以后再写吧。

相关推荐:

php实现后期静态绑定

php后期静态绑定实例详解

php延迟静态绑定是什么?延迟静态绑定实例代码详解

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!