0

継承に少し問題があります。私はそのようなものを持っています

ファイルA.php

namespace Main;
class A{
    public function __construct(){ echo 'A->__construct'; }
}

およびファイルB.php

namespace Main;
class B extends \Main\A{
    /* if I write this construct and remove extends from this class - it works - but I need to inherit it */
    public function __construct(){ $a = new \Main\A(); }

    public function something(){ echo 'B->something';}
}

クラスを継承できない、または別のクラスを継承できない場合はありますか?

4

2 に答える 2

1

私は私を夢中にさせていた同様の問題を抱えていました。

テストとして、親クラスをコピーして名前を変更し(つまり、抽象クラスのコードはファイル名とクラス名を除いてまったく同じです)、問題が「修正された」ことを継承しました。変!。

私の場合、別のクラスにエラーの原因となっているクラスのrequire_onceがあり(つまり、元のポスターの例では「B」)、「require_once B」を削除すると修正されたことがわかりました。どういうわけか、PHPがクラスをロードしない原因となっている循環的なものを導入したに違いありません-誰かにアイデアがあれば、知識を増やしたいと思います。

とにかく...私は spl_autoload_register を使用するようになりました(間違いなく行く方法です)。spl_autoload_register を使用して、require_once を削除すると、問題が解決したように見えるときはいつでも削除できます。

この返信が元のポスターには遅すぎることは承知していますが、これが、似たような問題で (私のように) 髪を抜いている他の誰かに役立つことを願っています.

于 2013-11-11T15:18:43.200 に答える