PHP - 调用未定义的函数,需要来自不同文件夹的文件并使用命名空间

时间:2014-08-18 13:49:45

标签: php namespaces directory undefined fatal-error

编辑:我删除了名称空间,但它仍然无效。如果我使用blog.php将文件移动到同一文件夹中,则可以正常工作。目前,我已经在管理文件中再次连接到数据库,但我认为这不是解决方案。

这是我发布的第一个问题。我最近开始学习PHP,我真的很喜欢它,但我现在遇到了问题。我已经搜索了答案,但我找不到任何相关内容。

所以这就是我的问题。

我正在尝试构建一个简单的博客,我想创建一个管理部分。所以我创建了一个新文件夹' admin'和一个文件" index.php'在里面。当我需要' blog.php'连接到数据库的文件,我收到错误:

'致命错误:在第5行' 的C:\ xampp \ htdocs \ blog \ blog.php中调用未定义的函数Blog \ DB \ connect()。

在包含我所有与数据库相关的函数的文件db.php中,我使用名称空间Blog \ DB。 我真正得到的是,如果我移动管理员' index.php'将文件放在与blog.php相同的文件夹中。

以下是两个文件的代码。

blog.php

 <?php 
    require 'functions.php';
    require 'db.php';
    //Connect to the db
    $conn = Blog\DB\connect($config);
    if (!$conn) die('Problem connecting to the db!');
    ?>

系统管理员/ index.php的

<?php 
require '../blog.php';
?>

db.php使用:

namespace Blog\DB;

谢谢!

4 个答案:

答案 0 :(得分:0)

尝试更改

$conn = Blog\DB\connect($config);

$conn = \Blog\DB\connect($config);

即使不确定这是否应该起作用,因为我认为这不是命名空间问题。

答案 1 :(得分:0)

试试这个......

require __DIR__ . '/../db.php';

我也在使用PHP并遇到与您相同的问题。我尝试了上面这一行并且它有效。

注意:我的工作没有别名和命名空间。

答案 2 :(得分:-1)

我遇到了同样的问题,我刚才补充道 require '../db.php';
在admin / index.php中 它解决了这个问题,但我不知道为什么会出现这个问题。 我最好的猜测是,当我们需要使用命名空间的文件时(比如你的blog.php使用Blog / DB),我们必须要求我们设置该命名空间的文件(db.php)

答案 3 :(得分:-1)

我最近遇到了同样的问题,经历了相同的PHP课程。问题是包含在子目录中导致文件路径问题。它与名称空间无关。

将blog.php中的require 'db.php';替换为:

 require __DIR__ . '/db.php';

如果您运行的PHP版本低于5.3,请使用:

 require dirname(__FILE__) . '/db.php';

现在当它包含在/admin/index.php中时,对于blog和admin子目录,引用都是正确的。