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ます。

4

4 に答える 4

2

名前空間を に設定していますconnection複数の名前空間を使用できますが、次のように記述する必要があります。

<?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;

            .
            .
            .
    }
}
于 2013-03-20T14:47:08.280 に答える
0

PHPによると:同じファイルに複数の名前空間を定義する

同じファイルで複数の名前空間を宣言することもできます。

「reminders.php」では、そのページで説明されている構文に従って、複数の名前空間を宣言しました。後者( )は、クラスが作成されconnectionた名前空間であることをお勧めします。Reminders

于 2013-03-20T14:48:44.703 に答える
0

リマインダークラスの名前空間が2つありますか?

于 2013-03-20T14:44:57.623 に答える
0

本当にそのように 2 つの名前空間を使用できますか??.. 私が知っているように、このコードでは:

namespace reminder;
namespace connection;

次のコードは接続名前空間に行き、リマインダーは空です

そこから接続名前空間を削除してみてください。

于 2013-03-20T14:47:23.067 に答える