PHP
Constantes Magiques
Recherche…
Remarques
Les constantes magiques se distinguent par leur forme __CONSTANTNAME__
.
Il y a actuellement huit constantes magiques qui changent selon l'endroit où elles sont utilisées. Par exemple, la valeur de __LINE__
dépend de la ligne utilisée dans votre script.
Ces constantes spéciales sont insensibles à la casse et sont les suivantes:
prénom | La description |
---|---|
__LINE__ | Le numéro de ligne actuel du fichier. |
__FILE__ | Le chemin complet et le nom du fichier contenant les liens symboliques résolus. S'il est utilisé dans un include, le nom du fichier inclus est renvoyé. |
__DIR__ | Le répertoire du fichier. Si utilisé dans un include, le répertoire du fichier inclus est renvoyé. Ceci est équivalent à dirname(__FILE__) . Ce nom de répertoire ne comporte pas de barre oblique, sauf s'il s'agit du répertoire racine. |
__FUNCTION__ | Le nom de la fonction actuelle |
__CLASS__ | Le nom de la classe Le nom de la classe comprend l'espace de noms dans lequel il a été déclaré (par exemple, Foo\Bar ). Utilisé dans une méthode trait, __CLASS__ est le nom de la classe dans laquelle le trait est utilisé. |
__TRAIT__ | Le nom du trait Le nom de trait inclut l'espace de noms dans lequel il a été déclaré (par exemple Foo\Bar ). |
__METHOD__ | Le nom de la méthode de classe. |
__NAMESPACE__ | Le nom de l'espace de noms actuel. |
Le débogage et la journalisation sont les cas d'utilisation les plus courants pour ces constantes
Différence entre __FUNCTION__ et __METHOD__
__FUNCTION__
ne renvoie que le nom de la fonction alors que __METHOD__
renvoie le nom de la classe avec le nom de la fonction:
<?php
class trick
{
public function doit()
{
echo __FUNCTION__;
}
public function doitagain()
{
echo __METHOD__;
}
}
$obj = new trick();
$obj->doit(); // Outputs: doit
$obj->doitagain(); // Outputs: trick::doitagain
Différence entre __CLASS__, get_class () et get_called_class ()
__CLASS__
constante magique __CLASS__
renvoie le même résultat que la fonction get_class()
appelée sans paramètres et elles renvoient toutes les deux le nom de la classe où elles ont été définies (c'est-à-dire où vous avez écrit le nom de la fonction).
En revanche, les fonctions get_class($this)
et get_called_class()
appellent, get_called_class()
toutes les deux le nom de la classe réelle qui a été instanciée:
<?php
class Definition_Class {
public function say(){
echo '__CLASS__ value: ' . __CLASS__ . "\n";
echo 'get_called_class() value: ' . get_called_class() . "\n";
echo 'get_class($this) value: ' . get_class($this) . "\n";
echo 'get_class() value: ' . get_class() . "\n";
}
}
class Actual_Class extends Definition_Class {}
$c = new Actual_Class();
$c->say();
// Output:
// __CLASS__ value: Definition_Class
// get_called_class() value: Actual_Class
// get_class($this) value: Actual_Class
// get_class() value: Definition_Class
Constantes de fichiers et de répertoires
Fichier actuel
Vous pouvez obtenir le nom du fichier PHP actuel (avec le chemin absolu) en utilisant la constante magique __FILE__
. Ceci est le plus souvent utilisé comme technique de journalisation / débogage.
echo "We are in the file:" , __FILE__ , "\n";
Répertoire actuel
Pour obtenir le chemin absolu du répertoire où se trouve le fichier actuel, utilisez la constante magique __DIR__
.
echo "Our script is located in the:" , __DIR__ , "\n";
Pour obtenir le chemin absolu du répertoire où se trouve le fichier actuel, utilisez dirname(__FILE__)
.
echo "Our script is located in the:" , dirname(__FILE__) , "\n";
Obtenir des répertoires courants est souvent utilisé par les frameworks PHP pour définir un répertoire de base:
// index.php of the framework
define(BASEDIR, __DIR__); // using magic constant to define normal constant
// somefile.php looks for views:
$view = 'page';
$viewFile = BASEDIR . '/views/' . $view;
Séparateurs
Le système Windows comprend parfaitement les chemins
/
in, doncDIRECTORY_SEPARATOR
est utilisé principalement lors de l'analyse des chemins.
Outre les constantes magiques, PHP ajoute également des constantes fixes pour travailler avec des chemins:
-
DIRECTORY_SEPARATOR
constante pour séparer les répertoires dans un chemin. Prend valeur/
on * nix et\
sous Windows. L'exemple avec des vues peut être réécrit avec:
$view = 'page';
$viewFile = BASEDIR . DIRECTORY_SEPARATOR .'views' . DIRECTORY_SEPARATOR . $view;
- Constante
PATH_SEPARATOR
rarement utilisée pour séparer les chemins dans la variable d'environnement$PATH
. Il est;
sous Windows,:
autrement