在php的面向对象编程中,总会遇到class test{public static function test(){self::func();static::func();}public static function func(){} }可你知道self和static的区别么?其实区别很简单,只需要写几个d" /> 在php的面向对象编程中,总会遇到class test{public static function test(){self::func();static::func();}public static function func(){} }可你知道self和static的区别么?其实区别很简单,只需要写几个d">
Maison développement back-end tutoriel php php面向对象中self和static的区别

php面向对象中self和static的区别

Jul 29, 2016 am 08:51 AM
function model self static

data-id="1190000005060322" data-license="sa">

在php的面向对象编程中,总会遇到

<code>class test{
  public static function test(){
    self::func();

    static::func();
  }

  public static function func(){}
}</code>
Copier après la connexion

可你知道self和static的区别么?

其实区别很简单,只需要写几个demo就能懂:

Demo for self:

<code>class Car
{
  public static function model(){
    self::getModel();
  }

  protected static function getModel(){
    echo "This is a car model";
  }
}

Car::model();

Class Taxi extends Car
{
  protected static function getModel(){
    echo "This is a Taxi model";
  }
}

Taxi::model();</code>
Copier après la connexion

得到输出

<code>This is a car model
This is a car model
</code>
Copier après la connexion

可以发现,self在子类中还是会调用父类的方法

Demo for static

<code>class Car
{
  public static function model(){
    static::getModel();
  }

  protected static function getModel(){
    echo "This is a car model";
  }
}

Car::model();

Class Taxi extends Car
{
  protected static function getModel(){
    echo "This is a Taxi model";
  }
}

Taxi::model();
</code>
Copier après la connexion

得到输出

<code>This is a car model
This is a Taxi model
</code>
Copier après la connexion

可以看到,在调用static,子类哪怕调用的是父类的方法,但是父类方法中调用的方法还会是子类的方法(好绕嘴。。)

在PHP5.3版本以前,static和self还是有一点区别,具体是什么,毕竟都是7版本的天下了。就不去了解了。

总结呢就是:self只能引用当前类中的方法,而static关键字允许函数能够在运行时动态绑定类中的方法。

参考

  1. http://www.programmerinterview.com/index.php/php-questions/php-self-vs-static/

以上就介绍了php面向对象中self和static的区别,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pourquoi NameResolutionError(self.host, self, e) de e et comment le résoudre Pourquoi NameResolutionError(self.host, self, e) de e et comment le résoudre Mar 01, 2024 pm 01:20 PM

La raison de l'erreur est NameResolutionError(self.host,self,e)frome, qui est un type d'exception dans la bibliothèque urllib3. La raison de cette erreur est que la résolution DNS a échoué, c'est-à-dire le nom d'hôte ou l'adresse IP qui était. La tentative de résolution n'a pas pu être trouvée. Cela peut être dû au fait que l'adresse URL saisie est incorrecte ou que le serveur DNS est temporairement indisponible. Comment résoudre cette erreur Il peut y avoir plusieurs façons de résoudre cette erreur : Vérifiez si l'adresse URL saisie est correcte et assurez-vous qu'elle est accessible Assurez-vous que le serveur DNS est disponible, vous pouvez essayer d'utiliser la commande "ping" dans la ligne de commande pour tester si le serveur DNS est disponible Essayez d'accéder au site Web en utilisant l'adresse IP au lieu du nom d'hôte si vous êtes derrière un proxy

Que signifie fonction ? Que signifie fonction ? Aug 04, 2023 am 10:33 AM

Fonction signifie fonction. Il s'agit d'un bloc de code réutilisable avec des fonctions spécifiques. C'est l'un des composants de base d'un programme. Il peut accepter des paramètres d'entrée, effectuer des opérations spécifiques et renvoyer des résultats. code pour améliorer la réutilisabilité et la maintenabilité du code.

Comment s'utiliser soi-même en Python Comment s'utiliser soi-même en Python May 17, 2023 pm 10:40 PM

Avant d'introduire l'utilisation de self en Python, introduisons d'abord les classes et les instances en Python. Nous savons que les concepts les plus importants de l'orientation objet sont les classes et les instances. Les classes sont des modèles abstraits, comme les étudiants. représenté par une classe d’étudiants. Les instances sont des « objets » spécifiques créés à partir de classes. Chaque objet hérite des mêmes méthodes de la classe, mais ses données peuvent être différentes. 1. Prenons l'exemple de la classe Student. En Python, la classe est définie comme suit : classStudent(object):pass(Object) indique de quelle classe la classe hérite.

Trezor Cold Wallet : fonctionnalités et guide d'utilisation des modèles One et Model T Trezor Cold Wallet : fonctionnalités et guide d'utilisation des modèles One et Model T Jan 19, 2024 pm 04:12 PM

Après que des problèmes soient survenus dans de nombreuses bourses centralisées, de plus en plus d’investisseurs en cryptomonnaies ont commencé à transférer des actifs vers des portefeuilles froids afin de réduire les risques posés par les bourses centralisées. Cet article présente Trezor, le premier fournisseur de portefeuilles froids au monde. Depuis le lancement du premier portefeuille froid en 2014, il a été vendu dans de nombreux pays du monde. Les produits de Trezor incluent le Model One lancé en 2014 et la version avancée Model T lancée en 2018. Ce qui suit continuera à présenter les différences entre ces deux produits et les autres portefeuilles froids. Qu'est-ce que le portefeuille froid Trezor ? En 2014, Trezor a lancé le premier portefeuille froid ModelOne. En plus des devises courantes BTC, ETH, USDT et autres, le portefeuille prend également en charge plus de 1 000 autres devises.

Quel est le but de la fonction « enumerate() » en Python ? Quel est le but de la fonction « enumerate() » en Python ? Sep 01, 2023 am 11:29 AM

Dans cet article, nous découvrirons la fonction enumerate() et le but de la fonction « enumerate() » en Python. Qu'est-ce que la fonction enumerate() ? La fonction enumerate() de Python accepte une collection de données comme paramètre et renvoie un objet d'énumération. Les objets d'énumération sont renvoyés sous forme de paires clé-valeur. La clé est l'index correspondant à chaque élément, et la valeur est les éléments. Syntaxe enumerate(iterable,start) Paramètres iterable - Les données transmises dans la collection peuvent être renvoyées sous forme d'objet d'énumération, appelé iterablestart - Comme son nom l'indique, l'index de départ de l'objet d'énumération est défini par start. si nous ignorons

Explication détaillée du rôle et de la fonction de la table MySQL.proc Explication détaillée du rôle et de la fonction de la table MySQL.proc Mar 16, 2024 am 09:03 AM

Explication détaillée du rôle et de la fonction de la table MySQL.proc MySQL est un système de gestion de bases de données relationnelles populaire. Lorsque les développeurs utilisent MySQL, ils impliquent souvent la création et la gestion de procédures stockées (StoredProcedure). La table MySQL.proc est une table système très importante. Elle stocke les informations relatives à toutes les procédures stockées dans la base de données, y compris le nom, la définition, les paramètres, etc. Dans cet article, nous expliquerons en détail le rôle et les fonctionnalités de la table MySQL.proc

L'utilisation et la fonction de la fonction Vue.use L'utilisation et la fonction de la fonction Vue.use Jul 24, 2023 pm 06:09 PM

Utilisation et fonction de Vue.use Function Vue est un framework frontal populaire qui fournit de nombreuses fonctionnalités et fonctions utiles. L'une d'elles est la fonction Vue.use, qui nous permet d'utiliser des plugins dans les applications Vue. Cet article présentera l'utilisation et la fonction de la fonction Vue.use et fournira quelques exemples de code. L'utilisation de base de la fonction Vue.use est très simple, il suffit de l'appeler avant que Vue ne soit instanciée, en passant le plugin que vous souhaitez utiliser comme paramètre. Voici un exemple simple : //Introduire et utiliser le plug-in

Quelle est la fonction et l'utilisation de static en langage C Quelle est la fonction et l'utilisation de static en langage C Jan 31, 2024 pm 01:59 PM

Le rôle et l'utilisation de la statique en langage C : 1. Portée de la variable 2. Cycle de vie 3. Fonction interne 4. Modifier la fonction 6. Autres utilisations ; S'il y a le mot-clé static avant une variable, alors la portée de la variable est limitée au fichier dans lequel elle est déclarée. En d'autres termes, la variable est une "portée au niveau du fichier", ce qui est très utile pour empêcher le ". problème de définition de duplication des variables ; 2. Cycle de vie, les variables statiques sont initialisées une fois lorsque le programme commence à s'exécuter et détruites à la fin du programme, etc.

See all articles