Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wymuszenie bycia obiektem dla zwykłej zmiennej
Forum PHP.pl > Forum > PHP > Object-oriented programming
rafalp
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ś?
wrzasq
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.
rafalp
Rzutowanie:
  1. <?php
  2. $id = -1;
  3.                $user = (object) $id;
  4. ?>

nie działa poprawie.

edit:

OK mam tongue.gif
  1. <?php
  2. $user            = new stdClass;
  3.                $user->id        = -1;
  4. ?>
dr_bonzo
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.