2つのファイルがあります:index.phpをしてfoo.phpファイルがサブディレクトリ/ libにindex.phpの中に今クラスがPHPで宣言されていない場合、なぜ「新しい」スローエラーが発生しますか?
に置かれる をfoo.php、この機能
function bar(){
require('foo.php');
$foo = new Foo();
$foo->bar();
}
にしていますそして今foo.php
class Foo{
public function __construct(){
echo "baz";
}
public function bar(){
echo "bar";
}
}
に、エラーが発見するのは難しいです:私は、Fooクラスを必要にエラーをした代わりにrequire('lib/foo.php')
ので、私は書いているだけrequire('foo.php')
このエラーは、特に多くのコード行がある場合には、実際には見つけにくいです。
今すぐクラスの宣言はエラーを投げるべきですか?
エラー$foo = new Foo();
にエラーが発生すると、エラーが見つけやすくなります。この場合、Fatal error: Call to undefined method Foo::bar()
と表示されます。「しかしメソッドと宣言しましたが、エラーはどこか他の場所にあることを忘れてしまいます。
だから、なぜ存在しない新しいクラスを作成する際にPHPがエラーを投げないのですか? PHP ん
です。 https://3v4l.org/2as94。つまり、すでに定義されている同じ名前空間上に 'bar()'メソッドがない場合にのみ 'Foo'クラスが存在することを意味します。 –
おそらく 'include_path'に' lib'ディレクトリを宣言しましたか? – Oldskool
コメントが必要な場合は、まだ動作しているかどうかを確認してください。PHPが別の場所でPHPを見つけていることがわかっている場合は、 – DevDonkey