obtine proprietate obiect, ar trebui sa arunc o exceptie?

Odată am văzut pe cineva care folosea următorul cod pentru metoda __get și părea elegant, așa că am copiat.

public function __get($param)
{
    if (!isset($this->params[$param])) {
        throw new Exception("Property doesn't exist");
    }
    return $this->params[$param];
}

Dar acum pare prea mult pentru a face față unei excepții atunci când faceți o acțiune simplă bazată pe existența sau nu a proprietății. Ce este mai bine să faceți în acest caz. se întoarce NULL și apoi se verifică suficient?

0

2 răspunsuri

Aș spune că returnarea NULL și verificarea este suficientă, deși ar depinde de ceea ce face cererea dumneavoastră.

Dacă clasa dvs. creează proprietăți la timpul de execuție, atunci este bine să aruncați o excepție, dar dacă toate proprietățile există la timpul de compilare, atunci NULL este cel mai bun.

0
adăugat

În PHP, aceasta nu este o circumstanță excepțională, spre deosebire de alte limbi. Sunt de acord cu dvs. că o excepție este prea dramatică dacă nu există circumstanțe speciale în joc.

Aș încerca să imită comportamentul așteptat care este normal în PHP, ceea ce înseamnă returnarea valorii null și declanșează o eroare de nivel E_NOTICE sau E_USER_NOTICE . Acesta este comportamentul normal atunci când încercați să citiți o proprietate nedefinită, un indice matrice sau o variabilă.

btw - s-ar putea să fii, de asemenea, interesat de implementarea magiei __isset

0
adăugat
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT