2016-04-12 7 views
0

私はPDO拡張を構築しようとしていましたが、別のファイルで特別なクラスを作成したかったのですが、すべて同じ元のクラスにリンクしたいと思っていました。クラスでの拡張はどのように機能しますか?

私はいくつかのフレームワークを扱っており、彼らはextends classキーワードを使用していることがわかりました。あなたが与えたclassのクラスを追加したと思いました。

私が試してみましたいくつかのコードは次のとおりです。私は$psm->functionInTheExtendedClassよう$psm変数を呼び出すとき

$psm = new PSM(/*Information*/); 

しかし、それが思い付く:

class PSMQuery extends PSM { 

    // Functions and Jargon 

} 

は、私は、元のPSMクラスのオブジェクトを作ってみました私がそれを呼んだとき、それが未定義のメソッドであったというエラーです。

extendsキーワードを間違って使用していますか?

+0

その他の方法です。 IFクラスAがBを拡張すると、クラスAのクラスBのものにアクセスして使用することができます。 – Rizier123

+0

代わりに、メインクラスで私は他のクラスを拡張する必要がありますか? @ Rizier123 – Jek

+0

それを試して、それは働いた、ありがとう:) – Jek

答えて

1

私はextendsキーワードを間違って使用していますか?

正しく使用しますが、それは逆です。

PSMQueryPSMから延びた場合、これはあなたが他の方法で回避へのアクセスと使用のものをPSMからPSMQueryではなく、できることを意味します。

私はあなたが良い例を使用することができ、それを理解することだと思う:

class twoRoomApartment extends building { } 

だから今、あなたは2つの部屋のアパートは、おそらく建物ではなく他の方法で回避から延びていることが、論理的に考え、すでに見ることができます。

コード内には、PSMQueryというインスタンスが作成されます。

0

これは継承です。

親:PSM 子供:

あなたは親クラスの機能を拡張し、子クラスを作成している拡張使用PSMQuery

あなたの子クラスはすべての親クラスの機能を継承します。

親は子クラスの機能を取得しません。

親クラスのオブジェクトを作成しようとすると、子クラスの機能がわかりません。

子クラスのオブジェクトを作成し、親クラスからメソッドにアクセスする必要があります。