[alg/php] return by reference probleem bij een DAL

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Ik ben bezig met een kleine data access layer in PHP5 en ik stuit op enkele problemen. Deze komen naar voren bij het gebruik van return by reference bij een functie. Ik geef in de layer functionaliteit voor het ophalen van een object aan de hand van zijn ID of iets dergelijks. Ik probeer ook iets aan caching te doen zodat het object ook maar echt 1 keer opgehaalt wordt. Nu heb ik alleen een probleem met het returnen van een waarde als het niet gelukt is. Dus als het object niet opgehaald is. Ik return dan false, logisch dacht ik, maar het blijkt dat php dat niet leuk vind omdat deze niet by reference gereturned kan worden:

code:
1
2
3
4
5
6
7
8
function &getObject($params)
{
  // vind object
  if ( gevonden )
     return $object;

  return false;
}


Dit slikt php dus wel, maar er wordt wel een warning gegeneert die ik zeker niet wil hebben. Ik kan wel een exception gaan throwen oid, maar dat is erg smerig. Wat zijn de mogelijkheden?

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Tussenvariabele die je op false zet, en die dan returnen?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
-NMe- schreef op donderdag 06 januari 2005 @ 15:27:
Tussenvariabele die je op false zet, en die dan returnen?
Werkt dat? Even uitproberen.

Maar ik vraag me ook af hoe je dat zou oplossen in een taal als Java. In Java zou je nooit false kunnen returnen of zie ik dat verkeerd?

[ Voor 27% gewijzigd door Michali op 06-01-2005 15:32 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Michali schreef op donderdag 06 januari 2005 @ 15:28:
Werkt dat? Even uitproberen.

Maar ik vraag me ook af hoe je dat zou oplossen in een taal als Java. In Java zou je nooit false kunnen returnen of zie ik dat verkeerd?
Kan dat niet gewoon ook op die manier dan? Wanneer je een variabele de waarde false geeft, dan zet je toch gewoon ergens in het geheugen een bitje op 0? Je kan daar toch wel een referentie naar returnen? Ik kan het natuurlijk mis hebben omdat ik geen Java ken, maar het lijkt me gewoon mogelijk.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 18-09 22:40

Nick_S

++?????++ Out of Cheese Error

In Java zou je null terug geven en daarop controleren of een exceptie gooien en die afvangen.

Of een lege array / verzameling als de functie een verzameling zou teruggeven.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Nick_S schreef op donderdag 06 januari 2005 @ 15:59:
In Java zou je null terug geven en daarop controleren of een exceptie gooien en die afvangen.

Of een lege array / verzameling als de functie een verzameling zou teruggeven.
null kan natuurlijk wel ja. maar even ontopic weer.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Michali schreef op donderdag 06 januari 2005 @ 16:05:
null kan natuurlijk wel ja. maar even ontopic weer.
Hoe kunnen we ontopic gaan als we niet weten of mijn eerdere oplossing werkt? :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Nou mijn denkwijze bleek een beetje verkeerd te zijn. Schijnt dat je een reference niet eens zo terug hoeft te sturen. Maar je methode werkt wel overingens, maar ik heb hem niet nodig eigenlijk. Beetje onzinnig topic dus verder ;)

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 18-09 18:27

pjvandesande

GC.Collect(head);

Michali schreef op donderdag 06 januari 2005 @ 17:22:
Nou mijn denkwijze bleek een beetje verkeerd te zijn. Schijnt dat je een reference niet eens zo terug hoeft te sturen. Maar je methode werkt wel overingens, maar ik heb hem niet nodig eigenlijk. Beetje onzinnig topic dus verder ;)
In PHP kun je toch ook gewoon null returnen?

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Waarom wil je een object als reference terug geven als PHP5 dat standaard al doet?

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Sybr_E-N schreef op vrijdag 07 januari 2005 @ 12:21:
Waarom wil je een object als reference terug geven als PHP5 dat standaard al doet?
Kijk, dat wist ik nog niet dus. Daar ga ik nog wat meer over lezen 8)7

Nou dat maakt al die &-tjes dus overbodig en lost het probleem in zijn geheel op. Bedankt voor de input. Ik lees de manual dus toch te weinig nog blijkbaar.

[ Voor 24% gewijzigd door Michali op 07-01-2005 13:17 ]

Noushka's Magnificent Dream | Unity

Pagina: 1