Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: relacje, mapowanie rekordu, tworzenie obietkow
Forum PHP.pl > Forum > PHP > Object-oriented programming
altruista
Witam,
do tej pory tworzac proste aplikacje w php5 uzywalem nastepujacego "sposobu":

1. baza danych

tabela: uzytkownik
- id
- imie
- nazwisko
- adres_id
- email_id


tabela: email
- id
- email

tabela: adres
- id
- ulica
- numer
- miejscowosc
- kod_pocztow

2. uzywam klasy ktora mapuje dany rekord (poprzed podanie id rekordu do jej konstruktora) do obiektu czyli: tworze klase 'uzytkownik' ktora rozszerza klase activerecord inicjalizujac ja nazwa tabeli ktora chce odczytywac. potem pola odczytuje tak: uzytkowanik->getPole('imie'); .
wiadomo, o co chodzi....

Ale jak wykonam
  1. <?php
  2. $uzytkownik->GetPole('email_id');
  3. ?>
to mam tylko id a nie dane o emailu, wiadomo.....

wiec robie np tak:


  1. <?php
  2. class Uzytkownik extends AR {
  3.  
  4.  public $email;
  5.  public $adres;
  6.  
  7. public function __construct($id="") {
  8. $this->Init('uzytkownik', $id);
  9. // wypelniamy zmienne
  10. $this->email = new Email($this->GetPole('email_id'));
  11. $this->adres = new Adres($this->GetField('adres_id'));
  12.  
  13. }
  14.  
  15. }
  16.  
  17. class Email extends AR {
  18.  
  19. public function __construct($id="") {
  20. $this->Init('email', $id);
  21.  
  22.  
  23. }
  24.  
  25. }
  26.  
  27. class Adres extends AR {
  28.  
  29. public function __construct($id="") {
  30. $this->Init('adres', $id);
  31.  
  32.  
  33. }
  34.  
  35. }
  36. ?>




i jest fajnie, tworzac obiekt uzytkownika:
  1. <?php
  2. $us = new Uzytkownik(1);
  3. ?>


moge odczytac gdzie on mieszka naprzyklad:

  1. <?php
  2. $us->adres->getPole('mijescowosc');
  3. ?>


jest ladnie obiektowo....

jestem tez zmuszony tworzyc statyczna klase AppManager ktora np pobierze mi powiedzmy 10ciu userow. (statyczna metoda ktora wykonuje zapytanie np
  1. SELECT id FROM uzytkownik LIMIT 10
i tworzy dalej TABLICE OBIEKTOW uzytkownik (przez
  1. <?php
  2. new Uzytkownik ($id)
  3. ?>
) i zwraca mi ja. wykorzystuje to np do uzupelnienia szablonu odpowiednimi wartosciami.

programuje sie to nawet milo.... tylko........

Czy ten sposob ktorego uzywam jest prawidlowy?questionmark.gif Czy klasa AppManager ktora odpowiada u mnie za tworzenie grup obiektow jest dobrym rozwiazaniem? jesli nie to jak prawidlowo obslugiwac obiektowo relacje miedzy tabelami??

Pewne wady juz widac, np tworzac obiekt uzytkownik a nie krozystajac z jego adresu i emaila wykonuja sie niepotrzebne zapytania, ale rozwiazaniem moze okazac leniwa konkretyzacja.
Ale tu chodzi raczej o logike niz technike smile.gif
marcini82
Ja to zalatwiam w 1 klasie - np. do klasy uzytkownik dorzucam metode find() ktora mi znajduje pewna grupe uzytkownikow...
Zreszta kilka postow nizej porusza temat Modelu, ActiveRecord, DatabaseMapper...
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.