2

だから私はこの例を見つけました、私はphp oopを学んでいて、メソッドaddProductの引数ShopProductの意味とそれが何をしているのかを尋ねたいと思いましたか?

abstract class ShopProductWriter {
    protected $products = array();
    public function addProduct( ShopProduct $shopProduct ) {
        $this->products[]=$shopProduct;
    }
}
4

4 に答える 4

6

この行を1行ずつ見ていきましょう。

abstract class ShopProductWriter {

abstract。という名前のクラスを宣言しShopProductWriterます。abstractクラスをインスタンス化することはできません(インスタンスを持つことはできませんShopProductWriter)。このクラスを使用するには、を拡張するクラスを作成する必要がありますShopProductWriterhttp://php.net/manual/en/language.oop5.abstract.phpを参照してください

protected $products = array();

$products配列であるという名前のクラス変数を作成します。この変数の可視性はですprotected。これは$products、this演算子を使用してクラスコンテキスト内からのみアクセスできることを意味します。さらに、$this->productsを拡張するすべてのクラスで利用できるようになりますShopProductWriterhttp://php.net/manual/en/language.oop5.visibility.phpおよびhttp://php.net/manual/en/language.oop5.basic.phpを参照してください。

public function addProduct( ShopProduct $shopProduct ) {

publicという名前の可視関数を定義しますaddProduct。この関数は、を拡張する任意のクラスインスタンスのクラスコンテキストの外部で呼び出すことができますShopProductWriterShopProductこの関数は、拡張する子クラスまたは子クラスのインスタンスである必要がある単一のパラメーターを取りますShopProduct (「クラスまたはインターフェースが型ヒントとして指定されている場合、そのすべての子または実装も許可されます。」http://php.net/manual/を参照してください。 en / language.oop5.typehinting.php)。

$childInstance = new ChildCLassExtendingShopProductWriter();
$childInstance->addProduct($IAmAShopProductInstance);

最後に、

$this->products[]=$shopProduct;

この関数は、addProduct関数に渡されたインスタンスをクラス配列に追加しますproducts

于 2013-03-02T16:52:36.447 に答える
4

それはクラス$shopProductのインスタンスでなければならないことを意味しますShopProduct

ただし、型ヒントはオブジェクト、配列、およびインターフェースに対してのみ可能であることに注意してください。たとえば、文字列の型ヒントを実行することはできません。

できません

function wontWork(string $string) {}

于 2013-03-02T16:39:08.530 に答える
1

オブジェクトによって保存されている製品のリストに、指定された製品を追加します。

于 2013-03-02T16:38:10.417 に答える
0

ShopProductWriter抽象クラスです。保護さ$productsれた変数であり、array保存 addProductされているのは、オブジェクトによって保存されている製品のリストである関数です。

于 2013-03-02T16:40:27.607 に答える