Property (array) van parent aanpassen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Advanced Mendix Developer Order Management Systeme

Advanced Mendix Developer Order Management Systemen (NL) Den Haag HBO/WO IT Professional "Als Advanced Mendix Developer impact maken op de groeiende e-commerce markt? Je doet dit bij PostNL door met je DevOps team onze Mendix applicaties verder te ontwikkelen, waarbij je complexe logistieke business processen vertaalt naar applicaties die ons primaire proces ondersteunen". Wat ga je doen? PostNL wordt een postal tech company We nemen de ontwikkeling van onze IT applicaties in eigen hand door onze eigen software-ontwikkel-capability op te zetten. Als Advanced Mendix Developer ben je onderdeel van een multidisciplinair, agile werkend Business-IT-team. Samen met dit team bouw je onze logistieke IT-applicaties verder

Bekijk vacature »

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

29/11/2021 15:51:14
 
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.