Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wymuszenie bycia obiektem dla zwykłej zmiennej
rafalp
post
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Taki ciekawy problem:

  1. <?php
  2. $user = $this->get_user();
  3.  
  4.            if(is_object($user))
  5.            {
  6.                $user->id = $user->user_id;
  7.                $user->is_admin = ($user->user_group === 'Administrators') ? TRUE : FALSE;
  8.  
  9.            }
  10.            else
  11.            {
  12. // $user->id = -1
  13.                return -1;
  14.            }
  15. ?>


To wszystko gra, tylko problem w tym że mam potem często kody programu który sprawdza jaki user ma ID ($this->user->id > 0 (czyli ze jet ktos zalogowany)) i gdy get_user() nie zwróci poprawnego obiektu (a mam sytuacje że często może nie zwrócić np. przy wykasowaniu usera) potrzebuje po ELSE jakby wymusić żeby $user stał się obiektem który zawiera zmienną id = -1. Czyli chciałbym na sztywnio wpisać po prostu:
$user->id = -1; tyle że tak nie można, a można jakoś?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
wrzasq
post
Post #2





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


jest milion sposobow od konstruowania zmiennej samemu az po rzutowanie zmiennych, ale w tym wypadku bledna jest po prostu twoja filozofia dzialania. funkcja powinna zawsze zwracac obiekt, po prostu w wypadku na przyklad wykasowanego juzera zwracac obiekt pusty, na przyklad $user->isLoaded - false.
Go to the top of the page
+Quote Post
rafalp
post
Post #3





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Rzutowanie:
  1. <?php
  2. $id = -1;
  3.                $user = (object) $id;
  4. ?>

nie działa poprawie.

edit:

OK mam (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
  1. <?php
  2. $user            = new stdClass;
  3.                $user->id        = -1;
  4. ?>


Ten post edytował rafalp 28.12.2008, 21:24:38
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Masz pattern NullObject do podobnych sytuacji. Zachowuje api Usera - ale tak na prawde nic nie robi,a tylko ulatwia korzystanie z niego.
Generalnie to tosamo co stdClass ale masz przejrzysty projekt - bo jakbym zobaczyl ze $user jest klasy stdClass to "WTF!!??!" mi sie tylko nasuwa na mysl.

Ten post edytował dr_bonzo 28.12.2008, 21:33:06
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 23:12