为什么它找到脚本时找不到类?

时间:2013-03-20 14:42:04

标签: php namespaces

有一些奇怪的事情发生。

以下是来自view_reminders.php的代码段:

<?php 
  namespace reminder;
  require_once('./reusable/reminders.php');
?>

some HTML...

<?php  
    $reminders = new Reminders(); # STATEMENT THAT THROWS AN ERROR : LINE 23
    $reminder_details = $reminders->get_reminders();
    foreach($reminder_details as $reminder) {
        echo $reminder;
    }
?>

在上面的脚本中,语句$reminders = new Reminders()会引发错误:Fatal error: Class 'reminder\Reminders' not found in E:\Installed_Apps\xampp\htdocs\remind\view_reminders.php on line 23

我不明白这个错误。以下是reminders.php的摘要:

<?php
namespace reminder;
namespace connection;
require_once('./reusable/connection.php');

Class Reminders{
    private $user_info;
    private $userID;
    private $reminder_info;
    private $reminder_count;

            .
            .
            .
    }

现在为什么在找到脚本Reminders时找不到课程reminders.php

注意:目录结构:

     +--->resuable
          +---->connection.php
           ---->reminders.php
     ---->view_reminders.php

view_reminders.php位于connection.php目录中的reminders.phpreusable之外。

4 个答案:

答案 0 :(得分:2)

您正在将命名空间设置为connection。您可以使用multiple namespaces,但您必须将其编写为:

<?php
namespace connection;
require_once('./reusable/connection.php');

namespace reminder;
Class Reminders{
    private $user_info;
    private $userID;
    private $reminder_info;
    private $reminder_count;

            .
            .
            .
    }

另请查看手册的链接,了解使用括号使用多个命名空间的推荐方法:

<?php
namespace connection {
require_once('./reusable/connection.php');
}

namespace reminder {
Class Reminders{
    private $user_info;
    private $userID;
    private $reminder_info;
    private $reminder_count;

            .
            .
            .
    }
}

答案 1 :(得分:0)

Reminders类的双重命名空间?

答案 2 :(得分:0)

你能真正使用两种名称空间吗??我知道,在这段代码中:

namespace reminder;
namespace connection;

下一个代码将用于连接命名空间,提醒为空

尝试从那里删除连接命名空间。

答案 3 :(得分:0)

根据PHP: Defining multiple namespaces in the same file

  

也可以在同一个文件中声明多个名称空间。

在“reminders.php”中,您已根据该页面上描述的语法声明了多个名称空间。我建议后一个(connection)是创建Reminders类的命名空间。