Capisco come funziona ORM   persist   : 
//ORM "persist" oversimplification
function persist(&$entity)
{
    ...
    $insertId = api_actual_db_insert(...);
    $entity->setId($insertId);
}
//usage of ORM later ...
$this->getEntityManager()->persist($entity);
print $entity->getId();  //prints ID of newly inserted record
Ma perché no ...
function persist($entity)
{
    ...
    $insertId = api_actual_db_insert(...);
    return $insertId;
}
//later ...
$insertId = $this->getEntityManager()->persist($entity);
$entity->setId($insertId);
print $entity->getId();
Entrambe le modalità funzionano. Il mio problema è con "riferimenti". Posso forse vedere un po 'il perché e qual'è il motivo dietro il quale gli ORM funzionano in questo modo, ma la mia domanda deriva dallo scrivere la mia funzionalità specifica di dominio che ho deciso di imitare dopo i concetti di ORM e sto avendo "problemi" "con l'utilizzo di riferimenti. Questioni non tecniche ma questioni di scienze morali e informatiche, per quanto riguarda il ragionamento e le motivazioni per utilizzarle in questo contesto.
 Per essere precisi, esaminando il codice di Doctrine (la mia scelta di ORM), non ho visto un riferimento esplicito di   Entity    passato, quindi la meccanica di un ORM può usare qualche altra tecnica diversa. La mia domanda rimarrà comunque indipendentemente dal metodo. Quello che mi interessa è che   Entity    è popolato con   insert_id   , e   insert_id    non viene restituito esplicitamente. 
Il mio codice
 Ho un concetto di   Selection    oggetto che contiene un sacco di cose. Forse più tardi potrebbe diventare un vero   Entity   , ma al momento non lo è (un sacco di lavoro di refactoring da fare prima che sia pronto), quindi devo gestirlo manualmente, senza il supporto ORM. Ho scritto la mia funzione   persist    che è simile e la mia domanda è fondamentalmente ciò che ho già detto sopra. Posso capire perché un ORM funziona in questo modo ma non capisco se  dovrei implementare il mio storage allo stesso modo o meno . 
Domanda
 Per essere espliciti ... c'è qualche motivo particolare o particolare per cui un ORM userebbe questa tecnica specifica di popolamento di   Entity    con   insert_id    senza un'istruzione esplicita   return   , opposta a restituire   insert_id    esplicitamente tramite   return    dichiarazione al chiamante? Se scelgo di restituire   insert_id    esplicitamente, cosa mancherò / spezzerò?