0

わかりました、名前空間は初めてです。シナリオは次のとおりです...2つのファイルがあります

libs/class.mysql.inc.php

class MySQL{

}

クラス/class.mysql.inc.php

require_once('libs/class.mysql.inc.php'); 
interface MySQLTemplate{
}
class MySQLWrapper extends MySQL implements MySQLTemplate{
}

わかりました、ここに私の質問があります。MySQLWrapper の名前を MySQL に変更するにはどうすればよいですか? 明らかに「クラス MySQL が MySQL を拡張する」ということはあり得ません。ファイルを要求する前に名前空間を宣言することもできないようです。(まあ、できますが、名前空間を受け入れません)。libs/class.mysql.inc.php ファイルにも触れたくありません (可能な場合)。

ヒントはありますか?チップ?ここに可能性?

4

2 に答える 2

1

を参照する必要がある場合は常にMySQLWrapper、そのようなクラスにuseキーワードを指定する必要があります:

use MySQLWrapper as MySQL;

//do your stuff with MySQL as an alias
于 2012-11-09T12:40:17.420 に答える
0

わかりました。ファイル内でのみ名前空間を定義できるようです。インクルードは無視されます。私はファイルの先頭にランダムな名前空間を宣言することでそれを回避しました(PHPはこれが何よりも優先されるのが好きです)。次に、ファイルが含まれているため、inlcudeクラスの名前空間はグローバルです。だから私はそれを次のように動作させました:

libs / class.mysql.inc.php

class MySQL{

}

classes / class.mysql.inc.php

namespace Libs;
require_once('libs/class.mysql.inc.php'); 
namespace App;
interface MySQLTemplate{
}
class MySQL extends \MySQL implements MySQLTemplate{
}

これが他の誰かに役立つことを願っています...私はその振る舞いを理解していなかったので、しばらく頭をかいていた。

于 2012-11-09T11:17:21.237 に答える