Bir çocuk PHP Zaten başlatılmış bir ebeveyn uzatmak zorunda

0 Cevap php

Ben bu bir çözüm geliyor zor bir zaman sahip oldum. Hepinizin bana yardımcı olabilir umuyorum.

En iyi bir örnekle anlattı:

class Parent {
    public $nationality;

    function __construct($nationality)
    {
        $this->nationality = $nationality
    }
}

class Child extends Parent {
    function __construct() {
        echo $this->nationality; // hispanic
    }
}

// Usage:
$parent = new Parent('hispanic');
$child = new Child();

Ben çocuk zaten başlatılmış olan bir ebeveynden özellikleri ve yöntemleri miras istiyorum.


EDIT: Teşekkürler tüm yanıtları için - Sana biraz bilgi vereyim. Ben bir çiftleşmiş sistem yapmaya çalışıyorum. Ben iki sınıf var - Tag.php söylüyorlar, ve Form.php.

Ben bu gibi bakmak istiyorum:

class Tag {
    public $class_location;
    public $other_tag_specific_info;
    public $args;

    function __construct($args)
    {
        $this->args = $args;
    }

    public function wrap($wrapper) {
        ...
    }

    // More public methods Form can use.
}

class Form extends Tag {
    function __construct() {
        print_r($this->args()) // 0 => 'wahoo', 1 => 'ok'
        echo $this->class_location; // "/library/form/form.php"
        $this->wrap('form');
    }

    function __tostring() {
        return '<input type = "text" />';
    }
}

// Usage:
$tag = new Tag(array('wahoo', 'ok'));
$tag->class_location = "/library/form/form.php";
$tag->other_tag_specific_info = "...";
$form = new Form();

The reason I don't like the composite pattern is that it doesn't make sense to me why I would be passing in an instance of Tag to the constructor of one of its subclass, afterall - Form is a type of Tag right?

Thanks! Matt Mueller

0 Cevap