2009-02-23 9 views

Respuesta

46

./ es el directorio actual. Es básicamente el mismo que el file.php, pero en muchos casos (este incluido) no comprueba ningún lugar estándar en que PHP pueda buscar un archivo, en su lugar verifica solo en el directorio actual.

Desde el PHP documentation (nótese la última frase):

archivos para incluir son vistos por primera vez para en cada entrada include_path relativa al directorio de trabajo actual, y luego en el directorio del script actual. P.ej. si su include_path es librerías, el directorio de trabajo actual es/www /, incluyó include/a.php y se incluye "b.php" en ese archivo, b.php primero se busca en/www/libraries/y luego en/www/include /. Si filename comienza con ./ o ../, solo se busca en el directorio de trabajo actual.

+1

, entonces, require ("./file.php"); es más rápido que require ("file.php"); ? – webelizer

8

La primera versión obliga al mecanismo interno para incluir archivos con relación a la ... directamente archivo ejecutado. Así, por ejemplo, usted tiene

index.php

// directly executed script (php -f index.php or from a browser) 
include 'second.php'; 

second.php

// This is included relatively to index.php 
// Actually, it is first searched relatively to include_path, then relatively 
// to index.php 
include './third.php'; 

third.php

// This is included relatively to second.php ONLY. It does not search 
// include_path 
return "foo"; 
+1

¿Tiene alguna prueba (manual) para esto? –

+0

Tuve algunos errores que he corregido, el orden de búsqueda era incorrecto. La prueba es la respuesta sobre la mía. –

0

Está nombrando explícitamente el directorio actual.

4

Simplemente le está diciendo a php que incluya el archivo en el directorio actual solo o falle si el archivo no está presente.

Si utiliza el formato "indexcommon3.php" y el archivo no está presente, php lo buscará en la variable de sistema include_path.

Como referencia se puede utilizar http://www.php.net/manual/en/function.include.php

6

La respuesta corta

Tienes razón, no es de un solo directorio. A . se refiere al directorio en el que se encuentra, y ... se refiere al directorio principal.

Significado, ./file.php y file.php son funcionalmente equivalentes en PHP.Aquí está la página relevante de documentación: http://us.php.net/manual/en/wrappers.file.php

La respuesta más larga

Sin embargo, sólo porque funcionan de la misma en este contexto no significa que sean siempre los mismos.

Cuando está operando en un entorno de shell * nix, y escribe el nombre de un archivo ejecutable, el shell buscará en los directorios PATH, pero no se verá en el CWD, o en el directorio que ' Actualmente se encuentra en

lo tanto, si usted está en un directorio que tiene un archivo llamado:. myprogram.php (esto sería un archivo PHP CLI) y sólo tiene que teclear:

myprogram.php

se no importa si su programa es ejecutable o no. El shell se verá en/bin /,/usr/bin/etc para su archivo, pero no se verá en ./ ni en el directorio en el que se encuentre.

Para ejecutar ese programa sin agregar su directorio a el PATH, tiene que escribir

./myprogram

Así que en realidad ./, es más explícito. Significa que "el archivo que está buscando TIENE que estar aquí" y "no" significa "el archivo debe estar en algún lugar del programa buscando archivos".

4

dot-slash fuerza al archivo a encontrarse solo en el directorio actual, en lugar de buscar las rutas mencionadas en la configuración include_path.

Cuestiones relacionadas