GET/SET Eigenschappen.....

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roger Keulen

Roger Keulen

08/05/2011 13:50:37
Quote Anchor link
Hallo,

Ik ben gisteren begonnen met het maken van een `Business Objects` raamwerk. Alleen ben ik er snel achter gekomen da PHP niet echt een 4de generatie programmeer taal is. Volgens de handleiding van PHP zijn eigenschappen `variabele` die private, protected of public zijn. Nu is dit bij C++, Delphi, .Net, niet het geval natuurlijk.

Daar zijn properties 2 functies: de get en set functie van een property:

voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
class cTest1 {
   public Test = 1;
}

class cTest2 extends cTest1 {
   private Number = 1;
  
   public function setTest($Value) { $this->Number += (int) $Value; }
   public function getTest() { return (int) $this->Number; }
}

Maar nu moet ik steeds zelf de get en set gaan aanroepen. i.p.v. het systeem dit zelf uitzoekt... Tevens kan ik de `TEST` in de parent class nu niet overschrijven?


Ik heb het nu opgelost door:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
class cTest extends cBO_Framework {
   protected $Test = 1;

   public function _setTest($Value) {
      // Data validatie & conversie
   }
   public function _getTest($Value) {
      //  Data conversie  (bv: HTMLDecode...)
   }
}


In het framework zit een __get en __set magic function.... die de aanvraag doorlust aan _get$Property en _get$Property.

Hierdoor kan ik dus een PRIVE waarde PUBLIEK benaderen door middel van get en set functies...

Dus:
$Test = New cTest();
$Test->Test = 100; ->> $Test->_setTest($Value);
echo $Test->Test; ->> $Test->_getTest();



Weet iemand een ander idee hoe je dit kunt maken, uit eindelijk wil ik er bijvoorbeeld dit mee doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
class cBO_DB_Field_Varchar extends cBO_DB_Field {
    protected $MaxLength = null;
    public function __construct($BO, $Field, $Name, $Label = false, $Default = null, $MaxLength = 255) {
         parent::__construct($BO, $Field, $Name, $Label, $Default);
         $this->MaxLength = $MaxLength;
    }
    public function Cast(cBO_DB_Field_Varchar &$Object) { return $Object; }
    public function MaxLength() { return $this->MaxLength; }
    public function getValue() { return htmlspecialchars_decode(parent::getValue($this->Value));}
    public function setValue($Value) { parent::setValue(htmlspecialchars($Value));    }
}
 
Er zijn nog geen reacties op dit bericht.



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.