2010-12-14 68 views
0

J'ai une fonction qui est appelée comme ceci:PHP - obtenir parent objet

foo($object->ID); 

et dans la fonction je dois sélectionner une certaine façon $object si $object->ID est passé comme une variable.

function foo($id = NULL){ 
    if($id != NULL) ... // here I want to get $object 
    else ... 
} 

Comment est-ce que je peux faire ceci?

Répondre

1

Si je comprends ce que vous demandez correctement, pourquoi ne pas passer tout l'objet lui-même en ref?

function foo(&$obj) 
{ 
    if($obj != NULL && $obj->ID != NULL) 
    { 
     // ...process your stuff 
    } 
} 

Mon PHP de très rouillé, mais je suis assez sûr que ce que vous passez par ref ...

+1

Pass-by-ref n'est pas pertinent dans ce cas. –

+0

Je devrais clarifier: Vous voulez vous assurer que vous passez l'objet par référence afin de ne pas en faire une copie entièrement nouvelle. –

+0

Eh bien, la raison est assez stupide :) J'ai un ensemble de fonctions que tous, sauf celui-ci, prennent l'argument $ object-> id comme argument. Et il semble laid si seulement celui-ci n'a pas :) – Alex

5

Ce n'est pas possible. Vous passez un nombre sans aucune information sur son origine. Pour ce faire

foo($object) 

function foo($object){ 
    if($object->ID !== null) ... // work with $object 
    else ... // work with ID 

} 
2

Vous devez passer l'objet en argument au lieu de l'ID.

+0

Vous devez juste passer l'objet et obtenir ID de cet objet, pas ajouter un autre paramètre. – Josh

4

pourquoi pas:

foo($object); 

et

function foo($localObject){ 
    if(isset($localObject->id)){ 
    } 
}