間違ったファイルを誤って編集するという明らかな「人的要因」以外に、PHPで同じ名前の2つのクラスが異なるサブフォルダーにある場合、何か問題があるのではないかと思いました。
私はこれに関連する他の投稿をここやウェブ上の他の場所で探しましたが、この特定の質問に答えることができるものは見つかりませんでした。ただし、さまざまなフォルダーからのこの Autoloadクラスは非常に役立ち、実際、他の質問の1つを解決しました。
間違ったファイルを誤って編集するという明らかな「人的要因」以外に、PHPで同じ名前の2つのクラスが異なるサブフォルダーにある場合、何か問題があるのではないかと思いました。
私はこれに関連する他の投稿をここやウェブ上の他の場所で探しましたが、この特定の質問に答えることができるものは見つかりませんでした。ただし、さまざまなフォルダーからのこの Autoloadクラスは非常に役立ち、実際、他の質問の1つを解決しました。
これは、同じフォルダ内でも同じ名前のクラスを持つことができます。
ただし、PHPスクリプトに一度に1つのクラスのみをロードしていることを確認してください。
同じスクリプトに同時にロードすることはできません。
PHPは、同じ名前で2つのクラスを作成したかどうかを認識しませんが、実際には、PHPはそれらを同じスクリプトでロードしません。一度に1つのクラスを使用できます。
phpで名前空間を確認することもできます。
そこで、名前空間が登場します 。http ://www.php.net/manual/en/language.namespaces.rationale.php http://www.php.net/manual/en/language.namespaces.basics.php
これにより、同じ名前の2つのクラスを区別できます。
もちろん、同じフォルダーまたは同じクラス名の異なるフォルダーにファイルを作成できますが、1つのファイルで使用できる実装は1つだけです。
2つのクラスに同じ名前を付ける必要があり、それらを1つのファイルで使用する必要がある場合、解決策は名前空間である可能性があります... http://www.php.net/manual/en/language.namespaces.rationale.php
これは、同じフォルダ内でも同じ名前のクラスを持つことができます。これがコードのサンプルです。
ファイル名:namespace.php
<?php
namespace MyProject {
class Connection {
public function __construct(){
echo 'My Project class call';
}
}
function connect() {
echo 'My Project connect function.';
}
}
namespace AnotherProject {
class Connection {
public function __construct(){
echo 'Another Project class call';
}
}
function connect() {
echo 'Another Project connect function.';
}
}
?>
この名前空間を使用する別のファイル。ファイル名:myapp.php
<?php
require 'namespace.php';
//create a class object
$obj = new MyProject\Connection;
//calling a function
MyProject\connect();
//calling a another function
AnotherProject\connect();
?>
実際には可能ですが、オーバーロードやインターフェイスについても考えてください...
これらのクラスをインスタンス化すると、競合が発生すると思います。実際、私はそれをテストしたことはありませんが、PHPはJavaのようには動作しません。そこでは、同じ名前のクラスを異なるパッケージに入れ、インスタンス化時にそれらを区別するためにパッケージを指定できます...