user_name
userId | userName | userSurname | email (...)
user_memo
userId | userMemo
dlatego 2 tabelki, bo nie każda osoba musi mieć opis
Stworzyć go można tylko za pomocą metody statycznej get( $id ).
Mam metodę edit( $parmArr ), który edytuje strukturę w bazię jeśli jest to konieczne, np sprawdza czy osoba ma opis jeśli nie a ja chce go jej dodać tworzy nowy rekord w tabelcę user_memo
Ogólnie działanie
<?php $p = Person::get( 1 ); $p->edit( 'userName' => 'foo' 'userMemo' => 'opis' ); ?>
i chcę teraz żeby po edycji obiekt został zaktualizowany. Myślałem nad prostym rozwiązaniem:
<?php public function edit( $dataArr ){ // jesli to potrzebne aktualizuje bazę i potem $this = self::get( $this->getId() ); } ?>
Fatal error: Cannot re-assign $this
Ok, da się to jeszcze przejść po prostu zczytać dane podane w $dataArr i powpisywać je do właściwości, podobnie jak dla bazy robie. Ale co jeśli chce metode delete(), która ma usuwać odpowiadające rekordy w user_name oraz w user_memo oraz usunąć obiekt.
<?php public function delete(){ // wywal rekordy w bazie $this = NULL; } ?>
Nie zadziała.
Może totalnie źle myślę...

Edit
Oczywiście mógłbym zwracać obiekt tymi metodami ale zastanawiam się czy da się to zrobić wewnątrz.