La classe finale PHP est une classe qui empêche de remplacer une méthode des classes enfants uniquement par le préfixe final avec la définition. Cela signifie que si nous définissons une méthode avec le préfixe final, cela empêchera de remplacer la méthode. Habituellement, l'héritage du concept PHP OOP va permettre une énorme flexibilité au sein de la hiérarchie des classes. Vous pouvez créer une ou plusieurs sous-classes utilisées pour étendre les fonctionnalités de la classe de base, mais le concept de POO de PHP permet de créer des classes non extensibles. Ces classes sont appelées Classe Finale/Classes Finales.
PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulésCommencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Syntaxe :
final class Pavan{ }
final public function set_bike(){}
PHP Final Class fonctionne sur la base de la déclaration en ajoutant simplement le mot-clé FINAL avant le mot de classe. Final Class fonctionne sans étendre la classe. La classe enfant ne peut pas remplacer les méthodes finales. Les variables de classe normales ne peuvent pas être utilisées pour déclarer comme finales. La classe ou la méthode PHP Final ne peut pas être étendue comme les autres classes normales. Si la classe Final est étendue en utilisant une autre classe normale, alors Final Class amènera PHP à renvoyer FATAL ERROR dans la sortie du navigateur. De même la MÉTHODE FINALE aussi.
Voici les exemples donnés ci-dessous :
Ici, une classe est créée en utilisant le mot-clé final avant la classe. Cette dernière classe « Automobile1 » ne peut être étendue. Dans la classe finale, les méthodes/fonctions finales sont créées. Ensuite, la classe normale « Bmwcar1 » est créée avec une méthode/fonction, puis la méthode/fonction finale est créée à l'intérieur des balises de paragraphe. Ensuite, une classe « Tata1 » est créée pour étendre « Bmwcar1 » qui a la fonction/méthode normale « display() » mais la méthode price() n'est pas créée dans la classe Tata1 car son appel fournira une erreur fatale à cause du mot-clé final. . Il n'est pas extensible. Ensuite, l'objet « $bmwcar1 » est créé/créé. L’appel des méthodes display() et price() de la méthode finale se fait à partir des classes « Bmwcar1 » et « tata1 ».
Code :
<?php final class Automobile1{ final public function set_color1(){ } final public function show1(){ } } class Bmwcar1{ public function display1(){ echo "This is the bmwcar1 class \n";} final public function price1(){echo "This is the bmwcar1 class's final price method \n";} } class Tata1 extends Bmwcar1{ public function display1(){ echo "This is tata1 class \n";} } $bmwcar1 = new Bmwcar1(); $tata1 = new Tata1(); $bmwcar1->display1(); $bmwcar1->price1(); $tata1->display1(); $tata1->price1(); ?>
Sortie :
Ici, la classe « A1 » est créée avec un mot-clé FINAL. Ensuite, la fonction normale « show1() » est créée avec deux variables. À l’intérieur, la somme des variables sera stockée dans la variable $sum1. Puis fonction d'écho utilisée pour imprimer la somme des valeurs variables. Ensuite, la classe « B1 » est créée pour étendre la classe « A1 ». A l'intérieur de la classe « B1 », la multiplication des variables est effectuée et enregistrée dans une variable $multi1. Le résultat de la multiplication est imprimé à l'aide de la fonctionnalité d'écho mais ici nous étendons la classe finale « A1 » avec la classe normale « B1 ». Ici, nous étendons la classe/méthodes FINAL. Il renvoie FATAL ERROR car nous étendons une classe FINAL.
Code :
<?php final Class A1 { function show1($x1,$y1) { $sum1=$x1+$y1; echo "Sum of the given no.s = ".$sum1; } } class B1 extends A1 { function show($x1,$y1) { $multi1=$x1*$y1; echo "The Multiplication of the given no.s = ".$multi1; } } $obj1= new B1(); $obj1->show1(1001,1001); ?>
Sortie :
Ici, une classe normale « C1 » avec la fonction e($xx1) est créée puis une classe « D1 » est créée pour étendre la classe « C1 » pour utiliser les paramètres « C1 ». Ainsi, la classe « D1 » héritera des propriétés de la classe « C1 » et contiendra également les propriétés de la classe « D1 ». Jusque-là, tout est correct. Ensuite, une classe « A1 » est créée avec la fonction/méthode finale à l'intérieur avec les variables « x1 », « y1 » qui calcule la somme des variables. Après cela, la classe « B1 » est créée pour étendre la classe « A1 ». Mais les classes finales et les méthodes ne sont pas extensibles. Si vous essayez, une ERREUR FATALE se produira.
Code :
<?php class C1 { function e($xx1){ echo 'The value of xx1 variable value'.$xx1; } } class D1 extends C1 { function e($xx1){ $f=2*$xx1; echo 'The double value of f (xx1)'.$f; } } class A1 { final function show($x1,$y1) { $sum1=$x1+$y1; echo "Sum of given no=".$sum1; } } class B1 extends A1 { function show($x1,$y1) { $mult1=$x1*$y1; echo "Multiplication of given no=".$mult1; } } $obj=new D1(); $obj->e(13); $obj= new B1(); $obj->show(100,100); ?>
Sortie :
Dans l'exemple ci-dessous, une classe normale est créée dans un premier temps, puis une méthode finale est créée à l'intérieur avec les deux variables afin de calculer la somme des deux valeurs de variable, puis une nouvelle méthode/fonction est créée à l'intérieur de la classe normale pour multiplier les deux valeurs de variables et renvoie le résultat. Ici, seule une méthode finale est créée et appelée sans même être étendue, il n'y aura donc aucune occurrence d'erreur(s). La somme des variables ainsi que la multiplication des variables seront imprimées.
Code :
<?php class BaseClassone{ final function calculateone($val11,$val12){ $sum1 = $val11+$val12; echo "Sum of the given nums = ".$sum1; } function showone($x1,$y1){ $multip1=$x1*$y1; echo "Multiplication of the given nums = ".$multip1."\n"; } } $obj= new BaseClassone(); $obj->showone(12,12); $obj->calculateone(10,10); ?>
Sortie :
Le concept PHP Final Class est unique et non extensible comme les classes normales. Tout comme les classes Final, les méthodes Final ne sont pas non plus extensibles de manière unique. Le concept PHP Final Class empêchera les fonctionnalités d’héritage massives et encouragera également la composition. Toutes les API publiques de Final Class font partie de la ou des interfaces. Cela aide à l’encapsulation. La classe/méthode finale empêchera la classe/méthode de remplacer les classes/méthodes enfants. PHP Final Class/classes empêchera l’exploitation. Même si la ou les classes finales ne peuvent pas être étendues, ces classes finales sont extensibles sous certaines conditions. C'est comme si la classe Final devenait ou pouvait devenir une sous-classe mais elle ne pouvait pas être transformée en une superclasse.
Le mot-clé final PHP peut même être placé juste avant ou juste après le spécificateur d'accès. La/les méthode(s) finale(s) PHP ne doivent également avoir aucun type/type de retour spécifique/spécifié ni le/les nom(s) de la méthode.
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!