Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak najlepiej to zrobić ?
Forum PHP.pl > Forum > PHP > Object-oriented programming
become
korzystam z klasy DB pakietu PEAR do łączenia się z bazą danych.

teraz chciałbym sobie stworzyć kilka funkcji: dodawanie uzytkownika, usuwanie użytkownika itp.

jak najlepiej to zrobić ?

1. stworzyć klasę rozszerzoną, z funkcjami (SELECTAMI) które bedą wykonywały odpowiednie akcje ?
2. czy po prostu stworzyc zbior funkcji, gdzie w kazdej z nich bede na nowo tworzyl nowe polaczenie z baza mysql ?

Czy odwoływanie sie w funkcjach do obiektu klasy poprzez zmienna globalną jest prawidłowym zachowaniem programowania ?
np.

$mysql= new DB();

function dodajUzytkownika($array) {
global $mysql;

$q="INSERT INTO ....."
$mysql->query($q);
}


i jeszcze jedna sprawa.

mam stworzoną klasę do obsługi plików cookie.

jeżeli stworzę sobie klasę do obsługi np. logowania, albo formularza i chciałbym w tej klasie wykorzystać wlasciwosci i metody z klasy cookie, to jak najlepiej to zrobić ?
chodzi mi o komunikację pomiedzy różnymi klasami ?
na pewno rozszezanie klasy odpada bo logicznie robią one zypełnie co innego - wiec jak ?
eS...
Cytat(become @ 22.01.2007, 18:09:44 ) *
jeżeli stworzę sobie klasę do obsługi np. logowania, albo formularza i chciałbym w tej klasie wykorzystać wlasciwosci i metody z klasy cookie, to jak najlepiej to zrobić ?
chodzi mi o komunikację pomiedzy różnymi klasami ?
na pewno rozszezanie klasy odpada bo logicznie robią one zypełnie co innego - wiec jak ?

DZIEDZICZENIE?
Cysiaczek
Rozwiązań jest kilka co do komunikacji klas. Preferuj kompozycję nad dziedziczeniem.
tu akurat możesz np.:

  1. <?php
  2. class Cookie{
  3.  
  4. function sayHello(){
  5. print 'Hello :)';
  6. }
  7.  
  8. }
  9.  
  10. class Logowanie{
  11.  
  12. public $cookie;
  13.  
  14. public function __construct(Cookie $object){
  15. $this->cookie=$object;
  16. }
  17.  
  18. }
  19.  
  20. $cookie=new Cookie();
  21. $log=new Logowanie($cookie);
  22. $log->cookie->sayHello();
  23. ?>


Pozdrawiam.
become
ale mi niezbyt dokladnie o to chodzi.

chciałbym, zeby same klasy były niezależne co oznacza, że mogę sobie uzyc 1 klasy i nie potrzebuje drugiej do tego.

to znaczy klasa logowanie była kompletnei niezalezna od klasy cookie.

np. taki przypadek:

klasa 'formularz' odpowiada za funkcje weryfikujace zmienne formularza.
klasa 'cookie' za przetwarzanie cookie.
a klasa 'db' za przetwarzanie danych z mysql


i teraz lecimy: chcialbym zrobic cos takiego.

formularz sprawdza dane przekazane przez formularz (login i haslo).
nastepnie chce dane z obiektu formularza przekazac do obiektu db, aby sprawdzic dane w bazie.
jezeli taki uzytkownik istnieje to zapisuje cookie.

zalozenie - wszystkie klasy niezalezne.

czy to oznacza ze jedyna metodą zrobienia tego jest jest stworzenie 3 osobnych obiektów i wykorzystanie kodu proceduralnego do przesyłania miedzy nimi odpowiednich danych questionmark.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.