繁体   English   中英

如何包含嵌套文件夹中的脚本?

[英]How to include a script from nested folders?

我有这个文件夹结构:

-out
    -DBconnection.php
-root
    -application
        -contact.php

这也是contact.php的内容:

function index(){
    <form action="http://example.com/localhost/application/contact/check">
        // some code here ...
    </form>
}

function check(){
    // I need to include DBconnection.php script here
    require_once( /* what path */ );
    ...
}

但是此路径不起作用: ../../out/DBconnection.php

注意:上面的路径也适用于index()函数。 但是index()在我的路由系统中以及当我打开此路径时被定义为默认值

http://example.com/contact 
/* which is the same as
   http://example.com/contact/index
*/

然后将执行index 那么如何将DBconnection.php包含到check()函数中呢?

在这种情况下,我要做的是在根文件的最顶部添加以下几行:

define( 'DS',       DIRECTORY_SEPARATOR );
define( 'ROOT',     dirname(dirname(dirname(__FILE__))) ); // Root is ../../

当我包含一个文件时,我使用这些常量来获取路径(该路径始终相对于rood文档):

require ROOT . DS . "out" . DS . "DBconnection.php";

尝试使用:../../out/DBconnection.php

您必须具有以下结构:

DIR1
    out
        DBconnection.php
    root
        application
            contact.php

因此,从contact.php内可以使用DBconnection.php ,您必须向上3个目录。 正确的方法是: ../../out/DBconnection.php

这实际上取决于include路径中的内容以及应用程序的引导位置。

如果您正在使用相对路径(使用../ ,则是相对路径),则需要了解它只是因为它看起来与您正在处理的文件有关,而可能并非如此。 它与您“输入”的文件有关。

为了解决这个问题,您应该可以使用类似

include_once(dirname(__FILE__) . '/../../out/DBConnection.php');

但是 ,您真正应该做的是将应用程序路径放入包含路径。 这样,您将能够执行以下操作:

include_once('out/DBConnection.php');

您将可以在应用程序中的任何位置执行此操作!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM