Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Pytanie odnośnie klas
isso
post
Post #1





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

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


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ź


--------------------
Go to the top of the page
+Quote Post
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


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.

Ten post edytował nevt 8.04.2008, 18:03:27


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #3





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


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.


--------------------
Go to the top of the page
+Quote Post
maniekl2
post
Post #4





Grupa: Zarejestrowani
Postów: 162
Pomógł: 29
Dołączył: 6.04.2008

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


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

Ten post edytował maniekl2 8.04.2008, 18:36:56
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 06:23