点斜线对PHP的作用是什么?
A.这是做什么的?
require ("./file.php");
B.与此相比?
require ("file.php");
(它不是一个目录..这将是)
require ("../file.php");
./
是当前目录。 它和file.php
基本上是一样的,但是在很多情况下(包括这个),它并不检查PHP可能查找文件的任何标准位置,而是只检查当前目录。
从PHP文档 (注意最后一句):
包含的文件首先在每个相对于当前工作目录的include_path条目中查找,然后在当前脚本的目录中查找。 例如,如果你的include_path是库文件,当前的工作目录是/ www /,你包括include / a.php,并且在那个文件中包含了“b.php”,b.php首先在/ www / libraries /中查找,然后在/networking/包含/。 如果文件名以./或../开头,则仅在当前工作目录中查看。
第一个版本强制内部机制相对于…直接执行的文件包含文件。 所以例如你有
的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";
简答题
你是对的,这不是一个目录。 一个 。 指的是你所在的目录,而..指的是父目录。
意思是,./file.php和file.php在function上等同于PHP。 这是相关的文档页面: http : //us.php.net/manual/en/wrappers.file.php
更长的答案
但是,仅仅因为他们在这方面的工作原理并不意味着他们总是一样的。
当你在一个* nix shell环境中运行,并且键入一个可执行文件的名字时,shell将会在PATH目录中查找,但是它不会在CWD或者你目前所在的目录中查找。
所以,如果你在一个名为myprogram.php(这将是一个PHP CLI文件)的目录下,你只需input:
myprogram.php
不pipe你的程序是否可执行。 shell会在/ bin /,/ usr / bin / etc中查找你的文件,但是不会在./或者你所在的目录中查找。
要执行该程序而不将您的目录添加到PATH,您需要键入
./myprogram
所以,./更明确。 这意味着,“你正在寻找的文件已经在这里”,没有./的意思,“该文件应该在程序寻找文件的地方”。
简单地说,你只是告诉php将文件包含在当前目录中,或者如果文件不存在,就会失败。
如果你使用格式“indexcommon3.php”而该文件不存在,php将search到include_path系统variables。
点斜线只会强制在当前目录中find文件,而不是额外searchinclude_path设置中提到的path。
它明确地命名当前目录。