7

以下に示すように、スーパー クラス (記事) と 2 つのサブクラスがあります。各サブクラスに、すべてのオブジェクトを保持する静的配列を持たせたいと考えています。

abstract class Article
{
    public static $articles = array(); // Variable for storing all the objects of each sub-class.

    public function add_Object_To_Array()
    {       
        array_push(self::$articles, $this);
    }
}

class Report extends Article{}
class Interview extends Article{}

-2 つの Report オブジェクトを作成し、それらを配列に追加します。

$tmp = new Report();
$tmp->add_Object_To_Array();

$tmp = new Report();
$tmp->add_Object_To_Array();

- 2 つの Interview オブジェクトを作成し、それらの配列に追加します。

$tmp = new Interview();
$tmp->add_Object_To_Array();

$tmp = new Interview();
$tmp->add_Object_To_Array();

print_r(Report::$articles);
print_r(Interview::$articles);

-上記のスクリプトは、2 つの配列を吐き出します。

Array
(
    [0] => Report Object()

    [1] => Report Object()

    [2] => Interview Object()

    [3] => Interview Object()   
)
Array
(
    [0] => Report Object()

    [1] => Report Object()

    [2] => Interview Object()

    [3] => Interview Object()    
)

あなたが私に尋ねると、どちらもかなり似ているように見えますが、最初のものにはレポートのみが含まれ、2 番目のものにはインタビューのみが含まれます。

1. 配列が 1 つしかないように見えますが、なぜ配列が 1 つしかないのですか?
2. 同じクラスにオブジェクトの静的コンテナがありますが、これは不適切なコーディングですか? (助言がありますか?)

私はPHPにはかなり慣れていませんが、Javaのバックグラウンドがあります。

4

2 に答える 2