Maison  >  Article  >  développement back-end  >  Classe finale PHP

Classe finale PHP

WBOY
WBOYoriginal
2024-08-29 13:06:03836parcourir

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és

Commencez 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(){}

Comment fonctionne la classe finale PHP ?

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.

Exemples de classe finale PHP

Voici les exemples donnés ci-dessous :

Exemple n°1

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 :

Classe finale PHP

Exemple n°2

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 :

Classe finale PHP

Exemple #3

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 :

Classe finale PHP

Exemple n°4

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 :

Classe finale PHP

Avantages

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!

Déclaration:
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
Article précédent:Classe abstraite en PHPArticle suivant:Classe abstraite en PHP