Property (array) van parent aanpassen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joost van der Meijden

Joost van der Meijden

03/04/2012 00:03:40
Quote Anchor link
Beste,

Ik heb een property (array) die ik in de parent class aanmaak, deze wil ik kunnen aanpassen in mijn child class.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
class Form
{
    protected $_items = array();

    public function editProperty($name, $value)
    {

        $this->$name = $value;
    }

?>


Dan heb ik een class AddTextField waarmee ik de functie editProperty aanroep. Deze zou dus een item aan de protected function $_items moeten toevoegen, maar dat werkt niet :(

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
class AddTextField extends Form
{
    function
__construct($label, $type, $name, $value = '', $id = '')
    {

        if ($id == '')
        {

            $id = 'form'.$name;
        }

        $arrName = '_items['.$this->getArrayNr().']["form_tag"]["'.$name.'"]';
        $this->editProperty($arrName, '<input type="'.$type.'" name="'.$name.'" value="'.$value.'" id="'.$id.'" />');
    }
}

?>


Het aanpassen van een normale propery (niet een array dus) werkt wel?
Gewijzigd op 03/04/2012 00:07:33 door Joost van der Meijden
 
PHP hulp

PHP hulp

21/11/2024 12:56:09
 
Pim -

Pim -

03/04/2012 01:23:40
Quote Anchor link
public function editProperty($name, $value)
{
$this->_items[$name] = $value;
}

Toevoeging op 03/04/2012 01:24:54:

Oh, ik zie het al... Dat gaat niet werken. Je kan niet op deze manier waarden aanpassen.
 
Joost van der Meijden

Joost van der Meijden

03/04/2012 13:31:52
Quote Anchor link
Ik snap niet waarom ik wel een normale property (geen array) kan aanpassen, maar niet aan een array iets toevoegen..het maakt niet uit oftie op public of protected staat,,.
 
Wouter J

Wouter J

03/04/2012 14:07:17
Quote Anchor link
Omdat $this->_items['foo'] iets anders is als $this->'_items['foo']' (hetgeen jij nu probeert).

Wat netter is om een eigen setItems method te maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class Form
{
  protected $items = array();

  public function setItem( $name, $value )
  {

    $this->items[$name] = $value;
  }
}

class TextField extends Form
{
  public function __construct( $fooVal )
  {

    $this->setItem( 'foo', $fooVal );
  }
}


$t = new TextField('bar');
?>


Tevens is AddTextField een doe ding en dus een method en geen eigen klasse.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.