Maison  >  Article  >  développement back-end  >  Introduction détaillée et exemples de constantes magiques PHP, de fonctions magiques et de constantes prédéfinies

Introduction détaillée et exemples de constantes magiques PHP, de fonctions magiques et de constantes prédéfinies

王林
王林avant
2019-08-28 16:36:512228parcourir

1. Constantes magiques

1. __construct()

objet d'instanciation , lorsque __construct et une fonction avec le nom de classe et le nom de fonction existent en même temps, __construct sera appelé et l'autre ne sera pas appelé.

2. __destruct()

Appelé lorsqu'un objet est supprimé ou que l'opération de l'objet se termine

3. >

L'objet appelle une méthode. Si la méthode existe, elle sera appelée directement ; si elle n'existe pas, la fonction __call sera appelée

4. __get()

Lors de la lecture des attributs d'un objet, si l'attribut existe, la valeur de l'attribut sera renvoyée directement ; si elle n'existe pas, la fonction __get sera appelée.

5. __set() Lors de la définition des attributs d'un objet, si l'attribut existe, la valeur sera attribuée directement s'il n'existe pas, la fonction __set le sera ; être appelé.

6. __toString() Appelé lors de l'impression d'un objet. Comme echo $obj; ou print $obj;

7. __clone() est appelé lors du clonage d'un objet. Par exemple : $t=new Test();$t1=clone $t;

8 __sleep() serialize a été appelé auparavant. Si l'objet est relativement volumineux et que vous souhaitez supprimer quelques éléments avant de le sérialiser, vous pouvez envisager cette fonction.

9. __wakeup() est appelé lors de la désérialisation pour effectuer un travail d'initialisation d'objet.

10. __isset() est appelé lors de la détection de l'existence des attributs d'un objet. Par exemple : isset($c->nom).

11. __unset() est appelé lors de la suppression des propriétés d'un objet. Par exemple : unset($c->name).

12. __set_state() est appelé lorsque var_export est appelé. Utilisez la valeur de retour de __set_state comme valeur de retour de var_export.

13. __autoload() Lors de l'instanciation d'un objet, si la classe correspondante n'existe pas, cette méthode est appelée.

Exemple :

1

est appelé lors de la tentative de lecture d'une propriété qui n'existe pas. __get()

Si vous essayez de lire une propriété qui n'existe pas dans un objet, PHP donnera un message d'erreur. Si nous ajoutons la méthode __get à la classe, nous pouvons utiliser cette fonction pour implémenter diverses opérations similaires à la réflexion en Java.

class Test 
{ 
     public function __get($key) 
    { 
         echo $key . " 不存在"; 
    } 
} 

$t = new Test(); 
echo $t->name; 
输出:name不存在

2,

est appelé lorsque vous essayez d'écrire une valeur dans une propriété qui n'existe pas. __set()

class Test 
{ 
    public function __set($key, $value) 
    { 
         echo '对' . $key . "附值" . $value; 
    } 
} 

$t = new Test(); 
$t->name = "aninggo"; 
输出:对name赋值aninggo

3,

Cette méthode est appelée lorsque l'on tente d'appeler une méthode qui n'existe pas sur l'objet. __call()

class Test 
{ 
    public function __call($Key, $Args) 
    { 
         echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); 
    } 
} 

$t = new Test(); 
$t->getName(aning, go);

程序将会输出:
您要调用的 getName 方法不存在。参数是:Array
(
     [0] => aning
     [1] => go
)

4.

est appelée lors de l'impression d'un objet. Cette méthode est similaire à la méthode toString de Java. Cette fonction est rappelée lorsque nous imprimons l'objet directement. __toString()

class Test 
{ 
     public function __toString() 
     { 
         return "打印 Test"; 
     } 
} 

$t = new Test(); 
echo $t;

Lors de l'exécution de echo $t;, $t->__toString(); sera appelé, donc le programme affichera : Print Test;

5,

Lorsque l'objet est appelé lors du clonage. __clone()

class Test 
{ 
     public function __clone() 
     { 
         echo "我被复制了!"; 
     }
}

$t = new Test(); 
$t1 = clone $t;

程序输出:我被复制了!

2. Constantes magiques

1

__LINE__  Renvoie le numéro de ligne actuel dans le fichier.
2.
__FILE__Renvoie le chemin complet et le nom du fichier. S'il est utilisé dans un fichier d'inclusion, renvoie le nom du fichier d'inclusion. Depuis PHP 4.0.2, __FILE__ contient toujours un chemin absolu, alors que les versions antérieures contenaient parfois un chemin relatif.

3.

__DIR__Le répertoire où se trouve le fichier. S'il est utilisé dans un fichier inclus, renvoie le répertoire où se trouve le fichier inclus. C'est équivalent à dirname(__FILE__). Les noms de répertoire n'incluent pas la barre oblique finale, sauf s'il s'agit du répertoire racine. (Nouveau en PHP 5.3.0)
4.
__FUNCTION__ Renvoie le nom de la fonction (Nouveau en PHP 4.3.0). Depuis PHP 5, cette constante renvoie le nom de la fonction tel qu'il a été défini (sensible à la casse). En PHP 4, cette valeur est toujours en minuscule.
5.
__CLASS__ Renvoie le nom de la classe (récemment ajouté dans PHP 4.3.0). Depuis PHP 5, cette constante renvoie le nom de la classe lors de sa définition (sensible à la casse). En PHP 4, cette valeur est toujours en minuscule.

6.

__TRAIT__Nom du trait (récemment ajouté dans PHP 5.4.0). Depuis PHP 5.4, cette constante renvoie le nom du trait tel qu'il a été défini (sensible à la casse). Le nom du trait inclut la portée dans laquelle il est déclaré (par exemple FooBar).
7.
__METHOD__Renvoie le nom de la méthode de la classe (récemment ajouté dans PHP 5.0.0). Renvoie le nom de la méthode telle qu'elle a été définie (sensible à la casse). Format : Nom de la classe : Nom de la méthode

8,

__NAMESPACE__Le nom de l'espace de noms actuel (sensible à la casse). Cette constante est définie au moment de la compilation (nouveau dans PHP 5.3.0)

Constantes prédéfinies.

PHP_VERSION   La version du programme PHP, telle que 4.0.2
PHP_OS  Le nom du système d'exploitation qui exécute l'interpréteur PHP, tel que Windows
PHP_SAPI  Utilisé pour déterminer s'il est exécuté à l'aide de la ligne de commande ou du navigateur, si PHP_SAPI=='cli' signifie qu'il est exécuté à partir de la ligne de commande Analyser les problèmes potentiels de grammaire
E_ERROR  Inhabituel mais pas nécessairement au mauvais endroit
E_WARNING Symboles de changement de système, Windows est (RN), Linux est (/n), Mac est (R), à partir de PHP 4.3.10 et PHP 5.0 Disponible il y a 2 ans
E_PARSE Séparateur de répertoire système, Windows est une barre oblique inverse. (), Linux est une barre oblique (/)
E_NOTICE  Séparateur multi-chemins, Windows est une barre oblique inverse (;), Linux est une barre oblique (:)
PHP_EOL  Valeur maximale INT, plate-forme 32 bits, le la valeur est 2147483647, disponible depuis PHP 4.4.0 et PHP 5.0.5
DIRECTORY_SEPARATOR Longueur de mot INT, plateforme 32 bits La valeur est 4 (4 octets), disponible depuis PHP 4.4.0 et PHP 5.0.5
PATH_SEPARATOR4. Fonction de détection de l'environnement d'exécution PHP
PHP_INT_MAX 
Cette fonction renvoie une description de la chaîne PHP minuscule pour s'interfacer avec le serveur WEB. PHP_INT_SIZERenvoie une chaîne minuscule décrivant le type d'interface utilisé par PHP (l'API Serveur, SAPI).

Par exemple, cette chaîne sera "cli" sous PHP pour CLI, et il peut y avoir plusieurs valeurs différentes sous Apache, selon le SAPI spécifique utilisé.

Les valeurs possibles sont répertoriées ci-dessous : php_sapi_name()aolserver, apache, apache2filter, apache2handler, caudium, cgi (jusqu'à PHP 5.3), cgi-fcgi, cli, continuité, embed, isapi, litespeed, milter, nsapi, phttpd , pi3web, roxen, thttpd, tux et webjames.

SAPI : API côté serveur, semble être la même chose que CGI. L'API fournie par chaque serveur peut être différente, mais ils fournissent tous CGI.

On peut donc comprendre que CGI est un SAPI que chaque serveur devrait avoir. Apache possède son propre SAPI et IIS possède également le sien. Mais PHP peut fonctionner sur ces différents serveurs car PHP prend en charge leurs SAPI respectifs.
PHP-CLI : interface de ligne de commande php, php peut fonctionner dans ce mode ou en mode CGI. C'est une sorte de SAPI, qui a des fonctions similaires à CGI.

Si vous souhaitez en savoir plus sur le contenu connexe ou si vous souhaitez mieux maîtriser ces fonctions et constantes, veuillez visiter le site Web PHP chinois :
Tutoriel vidéo PHP

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer