2013-03-20 34 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.phpreminders.php屬於reusable目錄內。

+0

我不認爲你可以在PHP中有兩個名稱空間聲明。所以''Reminder'類實際上在'connection'命名空間中。 – 2013-03-20 14:45:55

回答

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'命名空間中的類。? ''Reminders'類使用'connection'命名空間。 – 2013-03-20 15:53:39

+0

@SuhailGupta我不確定你的意思,你可以通過'connection \ Connection'來訪問你的Connection類(我認爲它是類似的東西)。 – jeroen 2013-03-20 16:06:01

0

Reminders類上的雙命名空間?

0

你真的能使用兩個命名空間這樣?? ..因爲我知道,在這個代碼:

namespace reminder; 
namespace connection; 

下一個代碼會去連接的命名空間,並提示是空

嘗試從那裏刪除連接名稱空間。

0

根據PHP: Defining multiple namespaces in the same file

的多個名稱空間,也可以在同一個文件中聲明。

在「reminders.php」中,根據該頁面上描述的語法聲明瞭多個名稱空間。我建議後者(connection)是您的Reminders類已創建的名稱空間。