Maison  >  Article  >  développement back-end  >  Classes PHP, interfaces, résumé du code d'exemple de connaissances liées à la surcharge

Classes PHP, interfaces, résumé du code d'exemple de connaissances liées à la surcharge

伊谢尔伦
伊谢尔伦original
2017-06-29 13:36:58974parcourir

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.&#39; not exists&#39;;
  }
  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 &#39;<br>&#39;;
$obj->one = 1;
echo $obj->one;
echo &#39;<br>&#39;;
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 &#39;<br>&#39;;
    echo &#39;function &#39;.$name.&#39; not exist&#39;;
  }
  static function callStatic($name,$arr){
    echo &#39;<br>&#39;;
    echo &#39;function &#39;.$name.&#39; not exist&#39;;
  }
  /*public function call($name,$arr){
    $num = count($arr);
    if($num<1){
      $name();
    }else{
      $name = $name.&#39;_one&#39;;
      $name($arr[0]);
    }
  }*/
}
$obj->func();
bee::staFunc();
/*$obj->func(1);
function func(){
  echo &#39;<br>&#39;;
  echo &#39;no.0&#39;;
}
function func_one($val){
  echo &#39;<br>&#39;;
  echo &#39;no.&#39;.$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!

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