Résumé des exemples de points de connaissances liés à PHP

高洛峰
Libérer: 2023-03-03 19:56:01
original
1012 Les gens l'ont consulté

Les exemples de cet article résument les points de connaissances pertinents de la classe PHP. 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 remplacer la 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(){}
}
Copier après la connexion

Classe abstraite et méthode abstraite

abstract class a {
  public abstract function func();
}
class A extends a{
  public function func(){}
}
Copier après la connexion

① Une classe Vous pouvez utiliser abstract pour déclarer une classe abstraite ; une classe abstraite est une classe qui ne peut pas être instanciée et qui est uniquement utilisée comme classe parent pour d'autres classes.

abstract class name{}
Copier après la connexion

② Une méthode peut être déclarée comme méthode abstraite en utilisant des méthodes abstraites qui doivent uniquement déclarer l'en-tête de la méthode et n'ont pas besoin du corps de la méthode ; entre accolades.

abstract public function name($val);
Copier après la connexion

③ 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 contrôle d'accès ne peut pas être réduite et les paramètres de la méthode doivent également être cohérents (réécrits).

Interface

L'interface peut être considérée comme une abstraction de niveau supérieur de la classe abstraite, on peut dire qu'elle est un cas particulier de la classe abstraite

interface a{
  function func();
}
class A implements a {
  function func(){}
}
Copier après la connexion

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{}
Copier après la connexion

② Une interface ne peut hériter que d'une seule interface

interface a extends b{}
Copier après la connexion

③ 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

Technologie de surcharge

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 ; là où l'attribut n'est pas utilisé, effectuez ce qui suit Traitement

① Valeur : Appelez automatiquement __get()
② dans la classe Affectation : Appelez automatiquement __set()
③ dans la classe Déterminez s'il existe : Appeler automatiquement __isset dans la classe ()
④ Destruction : Appeler automatiquement __unset() dans la classe

Le principe est que ces méthodes sont prédéfinies, 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));
Copier après la connexion

Les résultats d'exécution sont les suivants :

one not exists
1
boolean true
Copier après la connexion

2. Surcharge de méthode : Si une méthode inexistante est utilisée, la méthode prédéfinie dans la classe sera appelée. Une méthode définie est utilisée pour gérer ce comportement

Pour les scénarios d'application où la méthode n'est pas utilisée, effectuez le traitement suivant<🎜 ; >

① Appel de méthodes inaccessibles dans l'objet : __call()

② Appel de 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;
}*/
Copier après la connexion

Les résultats d'exécution sont les suivants :

function func not exist
function staFunc not exist
Copier après la connexion

Remarque : les méthodes ci-dessus sont toutes des méthodes magiques et ont toutes des paramètres

J'espère que cela l'article sera utile à tout le monde dans la programmation PHP.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!