Toon posts:

[PHP4] member getters en setters?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben net met classes en objects in PHP4 begonnen, met als achtergrond vooral Delphi (daar verdien ik m'n brood mee).

Search al gebruikt, online manual op php.net uitgespit, etc., maar ik ben er nog niet achter hoe je iets als...
code:
1
     property value read getValue() write setValue();

...in PHP4 voor elkaar krijgt. De afzonderlijke methods (&getValue en &setValue) werken wel, maar ik wil ze 't liefst via de "value" member benaderen. Waarom? Omdat ik dat gewend ben en omdat dat imho een nette OOP-benadering is.

Kan dit in PHP4? En zo ja, hoe?

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:19
Binnen de Zend engine gebeurt dit wel, maar binnen PHP kan het niet, vrees ik.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Je bedoelt dat wanneer je een (private) property van buitenaf aanspreekt, binnen het object, dat dan impliciet de get- en set methods aangesproken worden? Dat gaat niet, ben ik bang. PHP is niet zo heel erg, tja, "OOP" ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Dat bedoelde ik idd. Dat ik die members niet van de buitenwereld af kon schermen had ik al begrepen, maar dat ik ze ook niet aan getters/setters kan koppelen valt me een tikkie tegen. Niet zo "OOP"...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

mja, ik vind eerlijk gezegd het bepalen dat members private zijn, een grotere vereiste van OOP dan set/get wrappers, maar goed :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je kan ze natuurlijk wel explicitiet aan getters/setters koppelen, maar ze worden nooit impliciet gegenereerd voor je.
(door domweg de getBlaat en setBlaat functies te maken)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:21

.oisyn

Moderator Devschuur®

Demotivational Speaker

ACM: dat kan idd, alleen dan moet je die functies zo aanroepen ipv gewoon net te doen alsof het een var is terwijl er onderwater je getter en setter worden aangeroepen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
ACM, .oisyn, kunnen jullie een tipje van de sluier oplichten? Hoe koppel ik dat member aan z'n getter/setter? Ik heb wel gevonden hoe ik 'm aan een constante kan koppelen, maar dat zocht ik nou net niet echt...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Wat ACM volgens mij bedoelt is dat je dit doet:

code:
1
2
3
4
5
6
class A {
   var $b;

   function getB () { return $this->b; }
   function setB ( $_b ) { return $this->b = $_b; }
}

En vervolgens die methods gewoon aan gaat spreken net als elke andere good old member function.

Die implicatie van set/get methods kun je echt vergeten, voorlopig :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Da's dus ongever wat ik met m'n &getValue en &setValue had gedaan. Schiet niet echt op... :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:21

.oisyn

Moderator Devschuur®

Demotivational Speaker

idd, wat drm zegt
je kunt in php niet met properties werken zoals dat in delphi en BCB kan. Getters en setters kun je wel maken, maar met de hand zoals drm doet, en dan moet je ook echt die functies aanroepen, en niet gewoon die virtuele variabele aanpassen zoals dat in Delphi kan. Bovendien kun je gewoon bij die variabele, aangezien php geen access modifiers kent

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Nog geen access modifiers kent, he. Met de Zend2 engine wordt alles anders
(*kuch* :/)

lees...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
.oisyn schreef op 19 november 2002 @ 00:24:
idd, wat drm zegt
je kunt in php niet met properties werken zoals dat in delphi en BCB kan.
OK, ben ik weer een stukje kennis rijker, en een illusie armer. Dank! (ook aan drm)

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

* LuCarD is geen OOP persoon uit de delphi en java tijdperk, maar een die er pas mee begonnen is met PHP4.

Maar ligt het nou aan mij wil je gewoon dit?

http://nl.php.net/manual/nl/ref.overload.php

Programmer - an organism that turns coffee into software.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

LuCarD schreef op 19 november 2002 @ 09:20:
* LuCarD is geen OOP persoon uit de delphi en java tijdperk, maar een die er pas mee begonnen is met PHP4.

Maar ligt het nou aan mij wil je gewoon dit?

http://nl.php.net/manual/nl/ref.overload.php
Waarschuwing

Deze module is EXPERIMENTEEL. Dat betekent, dat het gedrag van deze functies, deze functienamen, in concreto ALLES dat hier gedocumenteerd is in een toekomstige uitgave van PHP ZONDER WAARSCHUWING kan veranderen. Wees gewaarschuwd, en gebruik deze module op eigen risico.
Mja, misschien dat ie dat wil, maar ik zou het niet willen voorlopig :P
Pagina: 1