PHP bir üst sınıfta bir dizi değişkeni ekleme

3 Cevap php

PHP nasıl çocuk sınıflar için benim ebeveynin seçenekleri dizi uzatır mı?

Ben böyle bir şey var:

class ParentClass {

     public $options = array(
          'option1'=>'setting1'
     );

     //The rest of the functions would follow
}

Ben ana seçeneklerinden herhangi silmeden bir çocuk sınıf bu seçenekleri diziye eklemek istiyorum. Ben böyle bir şey yaptığını denedim, ama oldukça henüz çalışmak var değil:

class ChildClass extends ParentClass {

     public $options = parent::options + array(
          'option2'=>'setting2'
     );

     //The rest of the functions would follow
}

Ne böyle bir şey yapmak için en iyi yol olacağını?

3 Cevap

Ben yapıcı Bu özelliği başlatmak ve daha sonra herhangi bir alt sınıfta değerini uzatabilirsiniz daha iyi bir uygulama olduğunu düşünüyorum:

<?php
class ParentClass {

 public $options;
 public function __construct() {
  $this->options = array(
      'option1'=>'setting1'
   );

 }

 //The rest of the functions would follow
}
class ChildClass extends ParentClass {

 public function __construct() {
   parent::__construct();
   $this->options['option2'] = 'setting2';
 }

 //The rest of the functions would follow
}
?>

PHP ya da hayır, bunu yapmak için bir erişimcisine sahip olmalı, böylece $self->append_elements( 'foo' => 'bar' ); aramak değil, iç uygulama konusunda endişe edebilirsiniz.

Can Eğer array_merge?

Eğer bir sınıf oluşturmak için CTR kullandığınızı varsayarsak.

Örneğin

public function __construct(array $foo)
{
  $this->options = array_merge(parent::$options, $foo);
}