Quelles sont les méthodes d'interception en php ?

黄舟
Libérer: 2023-03-15 11:48:01
original
4906 Les gens l'ont consulté

Les méthodes d'interception PHP incluent : 1. La méthode "__get", 2. La méthode "__set()" ; 3. La méthode "__isset()" ; 4. La méthode "__unset($property)" ; __call()".

Quelles sont les méthodes d'interception en php ?

Quelles méthodes d'interception php fournit-il

序号 方法名 作用 实现版本
1 __get($property) 访问未定义的属性时候,调用该方法 >= PHP 5.3.0
2 __set($property, $value) 给未定义属性设置值的时候,调用该方法 >= PHP 5.3.0
3 __isset($property) 对未定义属性调用isset()时,调用该方法 >= PHP 5.1.0
4 __unset($property) 对未定义属性调用unset()时,调用该方法 >= PHP 5.1.0
5 __call($property, $args_array) 调用未定义方法时,执行该方法 >= PHP 5.3.0

Pour plus de détails, voir http://php. net /manual/zh/langue.oop5.magic.php Introduction

Qu'est-ce qu'un intercepteur PHP ?

Nom anglais "interceptor", sa fonction est d'intercepter les messages envoyant des méthodes et attributs non définis.

Regardons d'abord un morceau de code. Une classe School est définie, un objet $obj est instancié et un attribut professeur non défini est obtenu.

<?php
class School
{

}

$obj = new School;
var_dump($obj->teacher);
Copier après la connexion

Si vous utilisez la ligne de commande php pour l'exécuter, vous pouvez voir que php a signalé un avis d'attributs non définis. La valeur $obj->teacher est une valeur nulle, donc NULL

. <🎜 est imprimé. >
[root@localhost php]# php538 interceptor.php 
PHP Notice:  Undefined property: School::$teacher in /usr/local/sina_mobile/apache/htdocs/php/interceptor.php on line 11NULL
Copier après la connexion
Laissez-moi vous expliquer ici, l'exécution de la ligne de commande php et l'exécution de la page du navigateur ne sont pas nécessairement exactement les mêmes. Nous pouvons voir la capture d'écran ci-dessous lorsque le serveur Web exécute le même script avec Apache. signale au navigateur qu'il n'inclut pas php. Remarque, un 200 OK est renvoyé au navigateur. Il y a des problèmes avec l'interaction entre php et le serveur Web et l'interaction entre le serveur Web et le navigateur.

1 (1).png

Concernant le code précédent, nous pensons que si l'attribut professeur n'existe pas lors de l'accès au professeur, on peut intercepter la demande d'appel au professeur et faire quelques opérations, alors Il s'agit de l'intercepteur PHP. L'intercepteur PHP fournit une variété de méthodes. La méthode __get ici est appelée lors de l'accès à des attributs non définis.

Regardons le code et les résultats suivants

<?php

class School
{
    function __get($var)
    {
       echo $var; echo "\r\n"; 
       return "hello";
    }

    public $name = "Tom";

}

$obj = new School;
var_dump($obj->teacher);
var_dump($obj->name);
Copier après la connexion
Les résultats de l'exécution de ce qui suit sont les suivants Pour expliquer, la méthode __get doit avoir un paramètre, qui est le nom du. attribut non défini à appeler. La fonction retournera Le résultat est affecté à la propriété inconnue de l'appel.

[root@localhost php]# php538 interceptor.php 
teacher
string(5) "hello"
string(3) "Tom"
Copier après la connexion
Pour plus de connaissances connexes, veuillez visiter le

Site Web PHP chinois ! !

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!

É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!