Maison >développement back-end >tutoriel php >Classes PHP, interfaces, résumé du code d'exemple de connaissances liées à la surcharge
Cet article présente principalement des points de connaissances liés aux classes PHP, et résume et analyse les classes finales, les méthodes finales et les classes abstraites liées aux classes PHP, méthodes abstraites, interfaces, surcharges, méthodes magiques et autres concepts et techniques de fonctionnement connexes. Les amis dans le besoin peuvent se référer à
Cet article résume les points de connaissance pertinents des classes PHP à travers des exemples. Partagez-le avec tout le monde pour votre référence, comme suit :
Classe finale et méthode finale
Si une méthode de la classe parent est déclarée finale, la sous-classe ne peut pas la remplacer méthode. Si une classe est déclarée finale, elle ne peut pas être héritée.
final class a{} class a{ final public function A(){} }
Classes abstraites et méthodes abstraites
abstract class a { public abstract function func(); } class A extends a{ public function func(){} }
① Une classe peut être déclarée comme classe abstraite à l'aide de classes abstraites qui ne peuvent pas être instanciées ; Classe, utilisée uniquement comme classe parent pour d'autres classes.
abstract class name{}
② Une méthode peut être déclarée comme méthode abstraite en utilisant abstraite ; les méthodes abstraites n'ont besoin que de déclarer l'en-tête de la méthode et n'ont pas besoin du corps de la méthode entre les accolades.
abstract public function name($val);
③ S'il existe une méthode abstraite dans une classe, la classe doit être déclarée comme classe abstraite.
④ Si une sous-classe hérite d'une classe abstraite, la sous-classe ne peut pas implémenter toutes les méthodes abstraites de la classe parent à moins que la sous-classe continue également d'être une classe abstraite.
⑤ Lorsqu'une sous-classe implémente une méthode d'une classe parent abstraite, la portée du caractère de contrôle d'accès ne peut pas être réduite, et les paramètres de la méthode doivent également être cohérent (réécrit).
Interface
L'interface peut être considérée comme une abstraction de niveau supérieur de la classe abstraite, elle peut être considérée comme un cas particulier de classe abstraite
interface a{ function func(); } class A implements a { function func(){} }
Classe : attributs, constantes de classe, méthodes
Classe abstraite : attributs, constantes de classe, méthodes abstraites
Interface : constantes d'interface, méthodes abstraites
① Par rapport aux classes abstraites, les interfaces peuvent implémenter un « héritage multiple »
class A implements a,b,c{}
② Une interface ne peut hériter que d'une seule interface
interface a extends b{}
③ Les méthodes sont toutes des méthodes abstraites sans modification abstraite, c'est-à-dire que les classes de niveau inférieur implémentent les méthodes d'interface (impléments) ou sont également déclarées comme méthodes abstraites
surcharge technologie
1. Surcharge d'attributs : Si vous utilisez un attribut inexistant, une méthode prédéfinie dans la classe sera appelée pour traiter les données
Pour les scénarios d'application où l'attribut n'est pas utilisé , effectuez le traitement suivant
① Valeur : Appeler automatiquement get() dans la classe
② Affectation : Appeler automatiquement set() dans la classe
③ Déterminer s'il existe : Appeler automatiquement la classe isset() dans isset()
④ Destruction : Appeler automatiquement unset() dans la classe
à condition que ces méthodes soient pré -défini, sinon une erreur sera signalée
<?php class bee{ public $ol = array(); public function get($key){ if(isset($this->ol[$key])){ return $this->ol[$key]; } return $key.' not exists'; } public function set($key,$val){ $this->ol[$key] = $val; } public function isset($key){ if(isset($this->ol[$key])){ return true; } return false; } public function unset($key){ unset($this->ol[$key]); } } $obj = new bee(); echo $obj->one; echo '<br>'; $obj->one = 1; echo $obj->one; echo '<br>'; var_dump(isset($obj->one));
Les résultats d'exécution sont les suivants :
one not exists 1 boolean true
Surcharge de méthode. : Si une méthode inexistante est utilisée, une méthode prédéfinie dans la classe sera appelée méthode pour gérer ce comportement
Pour les scénarios d'application où la méthode n'est pas utilisée, effectuez le traitement suivant ; 🎜>
① Appeler des méthodes inaccessibles dans l'objet : call()② Appeler des méthodes inaccessibles en mode statique : callStatic()
<?php class bee{ public function call($name,$arr){ echo '<br>'; echo 'function '.$name.' not exist'; } static function callStatic($name,$arr){ echo '<br>'; echo 'function '.$name.' not exist'; } /*public function call($name,$arr){ $num = count($arr); if($num<1){ $name(); }else{ $name = $name.'_one'; $name($arr[0]); } }*/ } $obj->func(); bee::staFunc(); /*$obj->func(1); function func(){ echo '<br>'; echo 'no.0'; } function func_one($val){ echo '<br>'; echo 'no.'.$val; }*/Les résultats d'exécution sont les suivants suit :
function func not exist function staFunc not exist
Remarque : Les méthodes ci-dessus sont toutes des méthodes magiques. Toutes ont des paramètres .
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!