PHP variable de magia

Cualquier script PHP para ejecutarlo ofrece una serie de constantes predefinidas.

Sin embargo, muchas constantes están definidas por varias extensiones, y sólo cuando se cargan aparecerán estas extensiones, o dinámicamente cargados, o se ha incluido en tiempo de compilación en ella.

Hay ocho constantes mágicas y sus valores a medida que cambian de posición en el código se cambia.

Por ejemplo __LINE__ valor sobre el cual es dependiente de la línea en el guión para decidir. Estas constantes especiales son sensibles a mayúsculas, de la siguiente manera:


__LINE__

Los archivos en el número de línea actual.

Ejemplo:

<?php
echo '这是第 “ '  . __LINE__ . ' ” 行';
?>

La salida del ejemplo anterior es:

这是第 “ 2 ” 行

__FILE__

La ruta completa y el nombre del archivo. Si se utiliza en el archivo de inclusión, a continuación, devolver el nombre del archivo para ser incluidos.

A partir de PHP 4.0.2 en adelante, __ FILE__ siempre contiene una ruta absoluta (si es un enlace simbólico, es una ruta absoluta ha analizado), y en esta versión anterior a veces contiene una ruta relativa.

Ejemplo:

<?php
echo '该文件位于 “ '  . __FILE__ . ' ” ';
?>

La salida del ejemplo anterior es:

该文件位于 “ E:\wamp\www\test\index.php ”

__DIR__

archivo de catálogo se encuentra. Si se incluye en el archivo, el directorio está incluido en el archivo se devuelve.

Es equivalente a dirname (__ FILE__). A menos que sea el directorio raíz, o el nombre del directorio no incluye una barra al final. (PHP 5.3.0 complemento)

Ejemplo:

<?php
echo '该文件位于 “ '  . __DIR__ . ' ” ';
?>

La salida del ejemplo anterior es:

该文件位于 “ E:\wamp\www\test ”

__FUNCTION__

Nombre de la función (PHP 4.3.0 añadido). A partir de PHP esta constante devuelve el nombre de la función, ya que fue declarada 5 casos (mayúsculas y minúsculas). En PHP 4 su valor siempre con una letra minúscula.

Ejemplo:

<?php
function test() {
	echo  '函数名为:' . __FUNCTION__ ;
}
test();
?>

La salida del ejemplo anterior es:

函数名为:test

__CLASS__

Nombre de la clase (PHP 4.3.0 en el original). A partir de PHP Esto devuelve el nombre de la clase constante se define como el tiempo desde 5 (mayúsculas y minúsculas).

En PHP 4 su valor siempre con una letra minúscula. nombre de la clase incluyendo el papel de la zona que se declara (como Foo \ Bar). Nota de PHP 5.4 en adelante __CLASS__ de rasgo también juegan un papel. Cuando se utiliza en los métodos de rasgo, __ método class__ rasgo es llamar al nombre de la clase.

Ejemplo:

<?php
<?php
class test {
	function _print() {
		echo '类名为:'  . __CLASS__ . "<br>";
		echo  '函数名为:' . __FUNCTION__ ;
	}
}
$t = new test();
$t->_print();
?>

La salida del ejemplo anterior es:

类名为:test
函数名为:_print

__TRAIT__

Nombre del rasgo (5.4.0 PHP añadido). A partir de PHP 5.4.0, PHP implementa un método de reutilización de código, llamados rasgos.

Nombre del rasgo incluida la función de la zona que se declara (como Foo \ Bar).

Está cubierto de la clase base hereda miembros insertan SayWorld Rasgo en el método MyHelloWorld. comportamiento MyHelloWorld enfoque coherente definido en la clase. La prioridad es el método actual en una clase sustituye el método rasgo, el método y el rasgo que cubre el método de la clase base.

<?php
class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}

trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}

class MyHelloWorld extends Base {
    use SayWorld;
}

$o = new MyHelloWorld();
$o->sayHello();
?>

El anterior ejemplo de salida voluntad:

Hello World!

__METHOD__

Los métodos para clases (PHP 5.0.0 en el original). Este método devuelve el nombre tal como fue declarado (mayúsculas y minúsculas).

Ejemplo:

<?php
function test() {
	echo  '函数名为:' . __METHOD__ ;
}
test();
?>

La salida del ejemplo anterior es:

函数名为:test

__NAMESPACE__

Nombre del espacio de nombres actual (mayúsculas y minúsculas). Esta constante se define en tiempo de compilación (PHP 5.3.0 en el original).

Ejemplo:

<?php
namespace MyProject;

echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"
?>

La salida del ejemplo anterior es:

命名空间为:"MyProject"