Maison  >  Article  >  développement back-end  >  Quelles sont les méthodes d’interception en php ?

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

黄舟
黄舟original
2017-08-18 13:25:264882parcourir

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);

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

.
[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
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);
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"
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!

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