2
PHPの派生クラスで関数のアクセスレベルを下げる可能性はありますか?派生クラスの関数のアクセスレベルを下げる
例は
class foo
{
public function myFunction() { ... }
public function myOtherFunction() { ... }
}
class bar extends foo
{
private function myFunction() { ... }
}
は、今私はMyFunc
イオンbar
オブジェクトを呼び出すことができshould'nt(...は、より多くのコードを意味します)。しかし、このようにすることは、PHPでは有効ではないようです。その他の方法で?私は空の関数を実装することができますが、私はインターフェイスに関数を公開したくないと思います。
私は、registerObject()という名前の関数を持つ抽象クラスを持っていて、これを拡張して、実際にはparent :: registerObject()を呼び出すregisterForm()という関数を持っていますが、問題のオブジェクトのより適切な名前。しかし、私はそれを考えると悪い習慣です:)...私はおそらく保護された関数registerObject()を作成し、次にpublicクラスのregisterForm()を派生クラス内に置くべきです。 – inquam
クラスOurExceptionがExceptionを継承しています。 OurExceptionのインスタンスを作成する2つの方法があります。 PHPは__constructをうまく過負荷にすることができないため、2つの静的メソッドを作成したいと考えています。 OurException :: newAとOurException :: newB(これは私の研究から、これはかなり標準的な方法でオーバーロードされます)。しかし、私たちは、 "new OurException"を使用している人に__constructを保護または非公開にしたいと考えていません。これは、例外__constructがpublicであるため不可能です。 – Pancho
...続きます。残念ながら、例外がスローされているときに、例外が「サポートされていません」をスローすることは、われわれのコンテキストでは意味をなさない。 PHPがコンストラクタに確実に過負荷をかけることができれば、上記のOOP「約束」を遵守することはずっと意味をなさないでしょう。しかし、クリーンなオーバーロードがなければ、「__constructへのアクセシビリティを減らす」ことができないということは、私たちの状況では非常に問題になります...そして、私は本当に問題を回避する方法がわかりません。 – Pancho