Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Pytanie odnośnie klas
Forum PHP.pl > Forum > PHP
isso
Witam, mam takie pytanko:

Przypuścmy mam dwie klasy:

  1. <?php
  2. class php_session{
  3. // tu znajdują się wszystkie potrzebne operacje na sesjach
  4. }
  5.  
  6. class php_users{
  7. // tu mam wszystkie operacje na użytkownikach wyłączając te operacje, które można 
    wykonać za pomocą 
  8. // klasy php_session - czyli nadawanie ciasteczek i przenoszenie danych o użytkownikach za pomocą zmie
    nnych
  9. }
  10. ?>


I teraz tak:

W klasie php_users mam funkcję, która loguje użytkownika i chciałbym teraz użyć modyfikatorów z klasy php_session aby dodać do sesji informacje o tym, że użytkownik jest zalogowany jak połączyć te dwie klasy ? I jak się odwoływać do obiektów.

z góry dziękuję za odpowiedź
nevt
dodałbym do klasy php_users prywatną własciwość session, a w kontruktorze klasy przekazywał jawnie stworzony wcześniej obiekt session, coś na kształt:
  1. <?php
  2. class php_session{
  3. // tu znajdują się wszystkie potrzebne operacje na sesjach
  4. }
  5.  
  6. class php_users{
  7.  
  8. private $ses;
  9.  
  10. public function __construct($session)
  11. {
  12. $this->ses = $session;
  13. }
  14.  
  15. // tu mam wszystkie operacje na użytkownikach wyłączając te operacje, które można wykonać za pomocą 
  16. // klasy php_session - czyli nadawanie ciasteczek i przenoszenie danych o użytkownikach za pomocą zmiennych
  17. }
  18.  
  19. $session = new php_session();
  20. $user = new php_user($session);
  21. ?>

jeżeli potrzebujesz sesji tylko w nielicznych metodach klasy php_users, to można rozważyć, jawne przekazywanie obiektu sesji tylko w wywołaniach tych metod, zamiast tworzenia odrębnej właściwości w konstruktorze klasy.
-=Peter=-
Obiekt sesji może zostać przekazany przez referencję:

  1. <?php
  2. class user{
  3.  private $sess = null;
  4.  public function __construct(Session $sess){
  5. $this->sess = $sess;
  6.  }
  7. }
  8. ?>


Można użyć klasę rejestru przechowywującą najważniejsze obiekty i np. tak pobierać obiekt sesji:

  1. <?php
  2. $session = Register::getSession();
  3. ?>


Można zastosować singleton i tak pobierać obiekt sesji:

  1. <?php
  2. $session = Session::getInstance();
  3. ?>


Najlepszymi rozwiązaniami jest referencja lub rejestr.
maniekl2
ja bym to zrobił w jednej klasie tylko podzielił na argumenty bo i tak masz to w jednym pliku nie ?

  1. <?php
  2. class php{
  3. public function php_session($id)
  4. {
  5. // tutaj co tam chcesz
  6. }
  7. public function php_users
  8. {
  9. // co tam chcesz i 
  10. return $this -> php_session($id); // możesz zamiast id wstawić imie
  11. }
  12. }
  13. ?>

a jeżeli w osobnych plikach to użyj
  1. <?php
  2. require_once('nazwklasy.php');
  3. $session = new php_session(); // w zależności jak nazwałeś klase
  4. $session -> php_session($id);
  5. ?>

chyba że źle zrozumiałem smile.gif
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.