2013-03-20 2 views
1

Существует какая-то странная вещь.Почему он не находит класс, когда находит скрипт?

Ниже приводится отрывок из 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.php, которые находятся в директории reusable.

+0

Я не думаю, что вы можете иметь два объявления пространства имен в PHP. Таким образом, класс 'Reminder' фактически находится в пространстве имен' connection'. –

ответ

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; 

      . 
      . 
      . 
    } 
} 
+0

Все в порядке. Но как я буду использовать класс, который есть в пространстве имен 'connection'.? Класс 'Напоминания' использует пространство имен' connection'. –

+0

@SuhailGupta Я не уверен, что вы имеете в виду, вы можете получить доступ к вашему классу Connection (я предполагаю, что это что-то подобное) с 'connection \ Connection'. – jeroen

0

Двойное пространство имен на классе напоминаний?

0

Можете ли вы использовать два пространства имен, что путь ?? .. как я знаю, в этом коде:

namespace reminder; 
namespace connection; 

следующий код будет идти на соединение имен, и напоминание пуст

попробуйте удалить из них пространство имен.

0

По PHP: Defining multiple namespaces in the same file:

несколько пространств имен также могут быть объявлены в том же файле.

В «reminders.php» вы указали несколько пространств имен в соответствии с синтаксисом, описанным на этой странице. Я бы предложил последний (connection) - это пространство имен, в котором был создан ваш класс Reminders.

Смежные вопросы