Maison > développement back-end > Problème PHP > Que signifie le soulignement en php

Que signifie le soulignement en php

藏色散人
Libérer: 2023-03-14 21:06:02
original
3203 Les gens l'ont consulté

Un trait de soulignement en php représente des variables privées et des méthodes privées, et deux traits de soulignement sont des variables intégrées à PHP. Par exemple, PHP stipule que les méthodes commençant par deux traits de soulignement sont réservées comme méthodes magiques, il est donc recommandé de ne pas utiliser les noms de vos fonctions. commencez par __ , sauf s'il s'agit de surcharger une méthode magique existante.

Que signifie le soulignement en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Que signifie le trait de soulignement en php

La signification des variables commençant par un trait de soulignement en PHP

? Règles de dénomination

Ajouter un Pour le privé

, l'ajout de deux est généralement la valeur par défaut du système et prédéfini par le système, c'est-à-dire ce qu'on appelle :

================ ======

Méthodes "Magiques" et "constantes magiques"

======================

★Constantes PHP commençant et se terminant avec des traits de soulignement doubles sont des "constantes magiques":

__LINE_ _Le numéro de ligne actuel dans le fichier.

__FILE__Le chemin complet et le nom du fichier.

__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__). À moins qu'il ne s'agisse du répertoire racine, le nom du répertoire n'inclut pas la barre oblique finale

Remarque : le contenu ci-dessus provient du "Manuel PHP chinois->Référence du langage->Constante->Constante magique".

À partir de php5 et des versions ultérieures, les classes php peuvent utiliser des méthodes magiques.

PHP stipule que les méthodes commençant par deux traits de soulignement (__) sont réservées comme méthodes magiques, il est donc recommandé que le nom de votre fonction ne commence pas par __, sauf s'il s'agit de surcharger une méthode magique existante.

Les méthodes magiques en PHP sont : __construct, __destruct, __call, __callStatic,__get, __set, __isset, __unset, __sleep, __wakeup, __toString, __set_state, __clone, __autoload

1, __get, __set

Ces deux méthodes sont conçues pour les propriétés non déclarées dans les classes et leurs superclasses

__get( $property ) Cette méthode est déclenchée lorsqu'une propriété non définie est appelée, en passant le nom de la propriété à laquelle on accède

__set ($property, $value) Lors de l'attribution d'une valeur à une propriété non définie, cette méthode sera déclenchée. Les paramètres passés sont le nom de la propriété et la valeur à définir. La déclaration no inclut ici que lors de l'appel avec un objet, le contrôle d'accès est protégé par les attributs privés (c'est-à-dire les attributs qui le font). je n'ai pas l'autorisation d'y accéder).

2, __isset, __unset

__isset( $property ) Cette méthode est appelée lorsque la fonction isset() est appelée sur une propriété non définie

__unset( $property ) Lorsque unset() est appelée sur une propriété non définie Cette méthode est appelé lors d'une fonction

Identique aux méthodes __get et __set. Le non déclaré ici inclut les attributs dont le contrôle d'accès est protégé et privé (c'est-à-dire les attributs sans autorisation d'accès) lorsqu'il est appelé à l'aide d'un objet

3. __call( $method, $arg_array ) Cette méthode est appelée lors de l'appel d'une méthode non définie

Les méthodes non définies ici incluent des méthodes qui n'ont pas l'autorisation d'accéder ; si la méthode n'existe pas, accédez à la classe parent pour trouver la méthode. Si le parent S'il n'existe pas dans la classe, appelez la méthode __call() de cette classe. Si la méthode __call() n'existe pas dans cette classe, accédez à la méthode __call() de la classe parent

4, __autoload

__autoload Fonction qui est automatiquement appelée lorsque vous essayez d'utiliser une classe qui n'a pas encore été définie. En appelant cette fonction, le moteur de script a une dernière chance de charger les classes requises avant que PHP n'échoue avec une erreur.

Si vous souhaitez définir une classe de chargement automatique globale, vous devez utiliser la méthode spl_autoload_register() pour enregistrer la classe de traitement dans la bibliothèque standard PHP :

<?php  
class Loader  
{  
static function autoload_class($class_name)  
{  
//寻找正确的$class_name类,并引入,没有则抛出异常  
}  
}  
  
/** 
*  设置对象的自动载入 
*  spl_autoload_register — Register given function as __autoload() implementation 
*/  
spl_autoload_register(array(&#39;Loader&#39;, &#39;autoload_class&#39;));  
  
$a = new Test();//Test没用require就实例化,实现自动加载,很多框架就用这种方法自动加载类  
  
?>
Copier après la connexion

Remarque : les exceptions levées dans la fonction __autoload ne peuvent pas être interceptées par le bloc d'instruction catch. et provoque une erreur fatale, elle doit donc être détectée dans la fonction elle-même.

5, __construct, __destruct

__construct méthode constructeur, cette méthode est appelée lors de la création d'un objet. L'avantage d'utiliser cette méthode par rapport à PHP4 est que la méthode constructeur peut avoir un nom unique, quel que soit le nom de la classe. dans lequel il se trouve. Quoi. Ainsi, lorsque vous changez le nom de la classe, vous n'avez pas besoin de changer le nom de la méthode constructeur

__destruct La méthode destructeur PHP appellera cette méthode avant que l'objet ne soit détruit (c'est-à-dire). , avant qu'il ne soit effacé de la mémoire). Par défaut, PHP libère uniquement la mémoire occupée par les propriétés des objets et détruit les ressources liées aux objets. Le destructeur permet d'exécuter du code arbitraire pour effacer la mémoire après avoir utilisé un objet. Lorsque PHP décide que votre script n'est plus associé à l'objet, le destructeur sera appelé.

Dans l'espace de noms d'une fonction, cela se produira au retour de la fonction.

Pour les variables globales, cela se produit à la fin du script.

Si vous souhaitez détruire explicitement un objet, vous pouvez attribuer n'importe quelle autre valeur à la variable pointant vers l'objet. Généralement, attribuez la variable à NULL ou appelez unset, __clone

L'affectation d'objet en PHP5 est utilisée. , si vous souhaitez copier un objet, vous devez utiliser la méthode clone. Lorsque cette méthode est appelée, l'objet appellera automatiquement la méthode magique __clone. Si certaines opérations d'initialisation doivent être effectuées lors de la copie de l'objet, elle peut être implémentée. dans la méthode __clone.

7. La méthode __toString

__toString est automatiquement appelée lors de la conversion d'un objet en chaîne, par exemple lors de l'utilisation d'echo pour imprimer l'objet.

Si la classe n'implémente pas cette méthode, l'objet ne peut pas être imprimé via echo, sinon il affichera : Catchable fatal error: Object of class test could not be convert to string in

Cette méthode doit renvoyer une chaîne.

Avant PHP 5.2.0, la méthode __toString ne pouvait prendre effet que lorsqu'elle était utilisée en combinaison avec echo() ou print(). Après PHP 5.2.0, il peut prendre effet dans n'importe quel environnement de chaîne (par exemple, via printf(), en utilisant le modificateur %s), mais ne peut pas être utilisé dans des environnements sans chaîne (comme en utilisant le modificateur %d). Depuis PHP 5.2.0, si un objet qui ne définit pas la méthode __toString est converti en chaîne, une erreur E_RECOVERABLE_ERROR sera signalée.

8, __sleep, __wakeup

__sleep Lors de la sérialisation, utilisez

__wakeup Lors de la désérialisation, appelez

serialize() pour vérifier s'il existe une fonction avec le nom magique __sleep dans la classe. Si tel est le cas, la fonction s'exécutera avant toute sérialisation. Il efface l'objet et doit renvoyer un tableau contenant les noms de toutes les variables de l'objet qui doivent être sérialisées.

Le but de l'utilisation de __sleep est de fermer toutes les connexions à la base de données que l'objet peut avoir, de soumettre des données en attente ou d'effectuer des tâches de nettoyage similaires. De plus, cette fonction est utile si vous disposez d'objets très volumineux qui n'ont pas besoin d'être stockés complètement.

En revanche, unserialize() vérifie l'existence d'une fonction avec le nom magique __wakeup. Cette fonction peut reconstruire toutes les ressources que l'objet peut avoir, s'il est présent.

Le but de l'utilisation de __wakeup est de rétablir toutes les connexions à la base de données qui pourraient avoir été perdues lors de la sérialisation et de gérer d'autres tâches de réinitialisation.

9. __set_state

Lorsque var_export() est appelé, cette méthode statique sera appelée (valable depuis PHP 5.1.0).

Le seul paramètre de cette méthode est un tableau, qui contient des propriétés de classe disposées au format array('property' => value, …).

10. __invoke

Lorsque vous essayez d'appeler un objet en appelant une fonction, la méthode __invoke sera automatiquement appelée.

PHP5.3.0 ou supérieur est valide

11. __callStatic

Cela fonctionne de la même manière que la méthode magique __call() consiste à gérer les appels de méthode statiques

PHP5.3.0 ou supérieur est valide

PHP en effet. Renforcement de la définition de la méthode __callStatic() ; elle doit être publique et doit être déclarée statique. De même, la méthode magique __call() doit être définie comme publique, comme toutes les autres méthodes magiques.

Apprentissage recommandé : "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!

É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