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, donc DIRECTORY_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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow