PHP5中虚函数的实现方法分享_php技巧
请看下面的代码:
class A {
public function x() {
echo "A::x() was called.\n";
}
public function y() {
self::x();
echo "A::y() was called.\n";
}
public function z() {
$this->x();
echo "A::z() was called.\n";
}
}
class B extends A {
public function x() {
echo "B::x() was called.\n";
}
}
$b = new B();
$b->y();
echo "--\n";
$b->z();
?>
该例中,A::y()调用了A::x(),而B::x()覆盖了A::x(),那么当调用B::y()时,B::y()应该调用A::x()还是 B::x()呢?在C++中,如果A::x()未被定义为虚函数,那么B::y()(也就是A::y())将调用A::x(),而如果A::x()使用 virtual关键字定义成虚函数,那么B::y()将调用B::x()。然而,在PHP5中,虚函数的功能是由 self 和 $this 关键字实现的。如果父类中A::y()中使用 self::x() 的方式调用了 A::x(),那么在子类中不论A::x()是否被覆盖,A::y()调用的都是A::x();而如果父类中A::y()使用 $this->x() 的方式调用了 A::x(),那么如果在子类中A::x()被B::x()覆盖,A::y()将会调用B::x()。
上例的运行结果如下:
A::x() was called. A::y() was called. --
B::x() was called. A::z() was called.
virtual-function.php
class ParentClass {
static public function say( $str ) {
static::do_print( $str );
}
static public function do_print( $str ) {
echo "
Parent says $str
";}
}
class ChildClass extends ParentClass {
static public function do_print( $str ) {
echo "
Child says $str
";}
}
class AnotherChildClass extends ParentClass {
static public function do_print( $str ) {
echo "
AnotherChild says $str
";}
}
echo phpversion();
$a=new ChildClass();
$a->say( 'Hello' );
$b=new AnotherChildClass();
$b->say( 'Hello' );

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Les différences entre php5 et php8 concernent les performances, la structure du langage, le système de types, la gestion des erreurs, la programmation asynchrone, les fonctions de bibliothèque standard et la sécurité. Introduction détaillée : 1. Amélioration des performances. Par rapport à PHP5, PHP8 présente une énorme amélioration des performances. PHP8 introduit un compilateur JIT, qui peut compiler et optimiser certains codes d'exécution à haute fréquence, améliorant ainsi la vitesse d'exécution. PHP8 introduit de nouvelles structures et fonctions de langage. PHP8 prend en charge les paramètres nommés, permettant aux développeurs de transmettre les noms des paramètres au lieu de l'ordre des paramètres, etc.

Comment changer le port 80 dans php5 : 1. Modifiez le numéro de port dans le fichier de configuration du serveur Apache ; 2. Modifiez le fichier de configuration PHP pour vous assurer que PHP fonctionne sur le nouveau port ; 3. Redémarrez le serveur Apache et l'application PHP le fera. commencez à exécuter sur le nouveau port.

La surcharge de fonctions en C++ permet de définir différentes implémentations pour des fonctions du même nom avec des paramètres différents, tandis que les fonctions virtuelles permettent de remplacer les fonctions de la classe de base dans les classes dérivées pour obtenir un polymorphisme. La surcharge de fonctions et les fonctions virtuelles peuvent fonctionner ensemble. En concevant une fonction virtuelle surchargée dans la classe de base, la classe dérivée ne peut surcharger que la version d'une combinaison de paramètres spécifique, offrant ainsi un polymorphisme plus flexible, comme le calcul de différents types dans des cas pratiques. de la forme depuis son origine.

Méthodes de débogage des fonctions virtuelles : définissez les points d'arrêt à parcourir ; utilisez assert() pour vérifier les conditions ; utilisez les outils de débogage pour vérifier les types dynamiques, les piles de fonctions et redéfinir les fonctions virtuelles.

Étapes de solution pour que PHP5 n'écoute pas le port 9000 : 1. Vérifiez le fichier de configuration PHP-FPM ; 2. Redémarrez le service PHP-FPM ; 3. Désactivez le pare-feu ou configurez la redirection de port ; 4. Vérifiez si d'autres processus occupent le port 9000.

Les différences de syntaxe entre php7 et php5 sont : 1. PHP7 introduit des déclarations de type strictes, tandis que le type des variables PHP5 est implicite ; 2. PHP7 introduit le support des déclarations de type scalaire, mais pas PHP5 3. PHP7 introduit l'opérateur de fusion NULL, tandis que PHP5 vérifie si une variable existe et n'est pas nulle, vous devez utiliser une instruction conditionnelle ; 4. PHP7 ajoute un nouvel opérateur de comparaison "<=>", mais pas PHP5 ; 5. PHP7 introduit une nouvelle fonctionnalité de classe anonyme, tandis que PHP5 ce n'est pas le cas.

En C++, les fonctions amies interagissent avec les fonctions virtuelles afin que la fonction amie puisse accéder à la fonction virtuelle et appeler la fonction amie dans la classe dérivée pour accéder aux membres privés de la classe de base. Cette interaction peut être utilisée pour accéder à des données cachées dans la hiérarchie d'héritage ou pour implémenter un comportement polymorphe.

Une fonction virtuelle est un mécanisme de polymorphisme qui permet à une classe dérivée de remplacer les fonctions membres de sa classe de base : Déclaration : Ajoutez le mot-clé virtual avant le nom de la fonction. Appel : à l’aide d’un pointeur ou d’une référence de classe de base, le compilateur se liera dynamiquement à l’implémentation appropriée de la classe dérivée. Cas pratique : En définissant la classe de base Shape et ses classes dérivées Rectangle et Circle, il démontre l'application de fonctions virtuelles en polymorphisme, calcul d'aire et dessin de formes.
