数码资讯
PHP中需要知道的请求()文件的正确用法
当看着一些PHP框架前,奇怪的是,当文件被包含,dirname(__file__)将被用来修补文件路径。我不知道这样做有什么好处,我终于找到了原因。 让我们看一个简单的例子: 有三个PHP文件A,B,在网站的根目录c.a.php,B B / b.php文件夹下的文件夹b.php,C - C / c.
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
当看着一些PHP框架前,奇怪的是,当文件被包含,dirname(__file__)将被用来修补文件路径。我不知道这样做有什么好处,我终于找到了原因。
让我们看一个简单的例子:
有三个PHP文件A,B,在网站的根目录c.a.php,B B / b.php文件夹下的文件夹b.php,C - C / c.php下c.php。这有点麻烦一眼就看这幅画。
两A.php和b.php包含c.php,最后c.php包含D文件夹下的php文件,D / d.php。
让我们先看看A.php:
< PHP
file_name美元= 'a.php;
回声这是A.php ;
;
要求(C / c.php);
>
很简单的代码,打印输出后,包含C / c.php,然后我们需要看看C / c.php:
< PHP
c_file_name美元= 'c.php;
echo'this是c.php,按'。file_name美元;
;
要求(.. / / d.php);
>
打印输出这是c.php,最后由A.php 要求的d.php在内。因为D文件夹在当前c.php文件,最上面的一层,是理所当然的事,我们自然会写路径。 / / d.php。但遗憾的是,这将是错误的。原因是在包含文件,如c.php,然后包括其他文件,路径是相对最外层的父文件,即相对于A.php,可以理解为也包括你我,所以你必须带我为标准。它看起来很难,原理很简单:你可以使用要求(C / c.php ');为C / c.php文件在A.php代码,这样我们可能看起来像这样:
< PHP
file_name美元= 'a.php;
回声这是A.php ;
;
/ /要求(C / c.php);
c_file_name美元= 'c.php;
echo'this是c.php,按'。file_name美元;
;
要求(.. / / d.php);
>
在这里,你可以看到,我们将包括D / d.php文件时,路径是错的吗因为,现在在A.php代码,我们相对于A.php文件,当然,这个路径应该是要求(会/ d.php);它是正确的。我们修改的代码如下:
< PHP
file_name美元= 'a.php;
回声这是A.php ;
;
/ /要求(C / c.php);
c_file_name美元= 'c.php;
echo'this是c.php,按'。file_name美元;
;
要求(会/ d.php);
>
在这一点上,你没有意识到的深层含义,要往下看,看看我们的B / b.php:
< PHP
file_name美元= 'b.php;
回声这是b.php ;
;
要求(.. / C / c.php);
>
不需要解释,没有问题,但是当你把需要(.. / C / c.php ');更换时,代码内的C / c.php,你就会发现问题,注意我们刚才修改的代码在C / c.php,要求(.. / D / d.php ');改变需要(会/ d.php ');看到下面的代码,包括后:
< PHP
file_name美元= 'b.php;
回声这是b.php ;
;
/ /要求(.. / C / c.php);
c_file_name美元= 'c.php;
echo'this是c.php,按'。file_name美元;
;
要求(会/ d.php);
>
然后,相对于B / b.php,要求(会/ d.php ');路径是错误的,应当要求(.. / / d.php ');刚刚好。你回去修改需要在C / c.php路径,但不正确的。在你改变了B/b.php可以正常运行,但 / A.php又坏了,是吗他们什么时候他们分享C / c.php做什么呢
在这个时候,我们回到目录(__file__)在文章开头所提到的,这是彻底解决上述问题的一个好东西。有了它,你不需要关心的文件路径包含什么。你不需要担心父文件的层次结构,因为目录(__file__)可以指定相对路径到当前文件。也就是说,我们需要改变的需要在我们的C / c.php路径:
< PHP
c_file_name美元= 'c.php;
echo'this是c.php,按'。file_name美元;
;
要求(dirname(__file__)。 / / / d.php ..);
>
在这里,我们只需要参考C / c.php作为参考,和它,D / d.php在上层,这样,只有一个标准。也就是说,如果我是负责人,如果你包括我或他包括我,我只以我自己为标准,我想要包含的文件只与我自己有关。
对于目录名相同的修复(__file__)不了解,请抛媚眼,很简单。
那么,PHP技术将在这一端共享。有任何问题或错误。请留言,这是我的第一个标准技术博客,第一个是水文学,第二个是准技术。今天,我们终于写了一个技术。
让我们看一个简单的例子:
有三个PHP文件A,B,在网站的根目录c.a.php,B B / b.php文件夹下的文件夹b.php,C - C / c.php下c.php。这有点麻烦一眼就看这幅画。
两A.php和b.php包含c.php,最后c.php包含D文件夹下的php文件,D / d.php。
让我们先看看A.php:
< PHP
file_name美元= 'a.php;
回声这是A.php ;
;
要求(C / c.php);
>
很简单的代码,打印输出后,包含C / c.php,然后我们需要看看C / c.php:
< PHP
c_file_name美元= 'c.php;
echo'this是c.php,按'。file_name美元;
;
要求(.. / / d.php);
>
打印输出这是c.php,最后由A.php 要求的d.php在内。因为D文件夹在当前c.php文件,最上面的一层,是理所当然的事,我们自然会写路径。 / / d.php。但遗憾的是,这将是错误的。原因是在包含文件,如c.php,然后包括其他文件,路径是相对最外层的父文件,即相对于A.php,可以理解为也包括你我,所以你必须带我为标准。它看起来很难,原理很简单:你可以使用要求(C / c.php ');为C / c.php文件在A.php代码,这样我们可能看起来像这样:
< PHP
file_name美元= 'a.php;
回声这是A.php ;
;
/ /要求(C / c.php);
c_file_name美元= 'c.php;
echo'this是c.php,按'。file_name美元;
;
要求(.. / / d.php);
>
在这里,你可以看到,我们将包括D / d.php文件时,路径是错的吗因为,现在在A.php代码,我们相对于A.php文件,当然,这个路径应该是要求(会/ d.php);它是正确的。我们修改的代码如下:
< PHP
file_name美元= 'a.php;
回声这是A.php ;
;
/ /要求(C / c.php);
c_file_name美元= 'c.php;
echo'this是c.php,按'。file_name美元;
;
要求(会/ d.php);
>
在这一点上,你没有意识到的深层含义,要往下看,看看我们的B / b.php:
< PHP
file_name美元= 'b.php;
回声这是b.php ;
;
要求(.. / C / c.php);
>
不需要解释,没有问题,但是当你把需要(.. / C / c.php ');更换时,代码内的C / c.php,你就会发现问题,注意我们刚才修改的代码在C / c.php,要求(.. / D / d.php ');改变需要(会/ d.php ');看到下面的代码,包括后:
< PHP
file_name美元= 'b.php;
回声这是b.php ;
;
/ /要求(.. / C / c.php);
c_file_name美元= 'c.php;
echo'this是c.php,按'。file_name美元;
;
要求(会/ d.php);
>
然后,相对于B / b.php,要求(会/ d.php ');路径是错误的,应当要求(.. / / d.php ');刚刚好。你回去修改需要在C / c.php路径,但不正确的。在你改变了B/b.php可以正常运行,但 / A.php又坏了,是吗他们什么时候他们分享C / c.php做什么呢
在这个时候,我们回到目录(__file__)在文章开头所提到的,这是彻底解决上述问题的一个好东西。有了它,你不需要关心的文件路径包含什么。你不需要担心父文件的层次结构,因为目录(__file__)可以指定相对路径到当前文件。也就是说,我们需要改变的需要在我们的C / c.php路径:
< PHP
c_file_name美元= 'c.php;
echo'this是c.php,按'。file_name美元;
;
要求(dirname(__file__)。 / / / d.php ..);
>
在这里,我们只需要参考C / c.php作为参考,和它,D / d.php在上层,这样,只有一个标准。也就是说,如果我是负责人,如果你包括我或他包括我,我只以我自己为标准,我想要包含的文件只与我自己有关。
对于目录名相同的修复(__file__)不了解,请抛媚眼,很简单。
那么,PHP技术将在这一端共享。有任何问题或错误。请留言,这是我的第一个标准技术博客,第一个是水文学,第二个是准技术。今天,我们终于写了一个技术。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。