Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> co powinno byc obiektem w cms
marekaaa
post 8.03.2009, 19:35:30
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.03.2009

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


Witam!

Jestem początkujący i chcę wiedzieć czy dobrze rozumiem to programowanie obiektowe smile.gif Zacząłem pisać prostego CMSa, nie jestem pewien czy dobrze rozumiem co powinno być obiektem, klasą, metodą. Poprawcie mnie jeśli źle myślę.

Mam tak:

1) klasa baza_danych, w niej metody obsługujące połączenie, rozłączenie z bazą i jedna wysyłająca zapytanie, które otrzyma jako argument.

2) klasa uzytkownik, obiektem tej klasy jest pojedyńczy uzytkownik(tak powinno być?), mam w niej zmienne: nazwa_uzytkownika, haslo. Metody: dodaj_uzytkownika, usun_uzytkownika, edytuj_uzytkownika.

Kiedy chce dodac uzytkownika to:

  1. <?php
  2. $user=new uzytkownik;
  3.  
  4. $user->nazwa_uzytkowinka="imie";
  5.  
  6. $user->haslo="asdasd";
  7.  
  8. $user->dodaj_uzytkownika();
  9. ?>


metoda dodaj_uzytkownika pobierze imie i haslo uzytkownika z nazwa_uzytkownika, haslo. Nastepnie wysle gotowe zapytanie do metody z klasy baza_danych.



Czy dobrze to zrobiłem? Tak samo myślałem robić z podstronami, menu i resztą.

I teraz drugie pytanie: jak rozwiązać wyświetlanie wszystkich uzytkownikow z bazy danych, jeżeli obiektem klasy jest tylko 1 użytkownik.



Nie zdziwie się, jeśli wszystko się okaże źle smile.gif Właśnie dlatego postanowiłem zapytać zmaiast pisac dalej. Pozdrawiam!
Go to the top of the page
+Quote Post
blooregard
post 8.03.2009, 21:18:33
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
Czy dobrze to zrobiłem?

Dokładnie o to chodzi. Bardzo dobrze zrobiłeś.

Cytat
I teraz drugie pytanie: jak rozwiązać wyświetlanie wszystkich uzytkownikow z bazy danych, jeżeli obiektem klasy jest tylko 1 użytkownik.

Utwórz sobie klasę UsersCollection - kolekcja (lista) obiektów klasy User
W niej będziesz miał jako właściwość tablicę obiektów klasy User.

I wtedy robisz cos takiego:
  1. <?php
  2. ....
  3. private $users_collection = array();
  4. ....
  5. getUsersList() {
  6.     ...zapytanie, zwracajace w wyniku listę użytkowników...
  7.    while (wiersz) {
  8.         $users_collection[] = new User( [tutaj_ID_usera_na_przyklad_czy_co_tam_masz_w_konstrukotrze] );
  9.    }    
  10. .....
  11. }
  12. ?>


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
marekaaa
post 9.03.2009, 16:35:31
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.03.2009

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


Czyli mam klasę uzytkownik, która obsługuje pojedzyńczego użytkownika i ma metody: dodaj_usera, usun_usera, edytuj_usera i właściwości np: id, imie, haslo.

Do tego tworzę klasę uzytkownicy, która ma tabelę obiektów klasy uzytkownik i jedną metodę ładującą z bazy danych wszystkie obiekty do klasy uzytkownik.

I teraz, gdy chcę coś zrobić to sobie odpalam metodę(z klasy uzytkownicy) ładującą obiekty, a następnie np. metodę dodaj_usera z klasy uzytkownik.

Jeśli tak to:

1) Czy klasa uzykownicy ma być matką klasy uzytkownik?

Ten post edytował marekaaa 9.03.2009, 16:37:04
Go to the top of the page
+Quote Post
.radex
post 9.03.2009, 16:41:15
Post #4





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


1. nie, jeśli dobrze zrozumiałem opis to nie.

Natomiast nie rozumiem po co komplikować sobie życie i zamiast

Użytkownicy::dodaj('nick', 'pass');

jest

  1. <?php
  2. $user=new uzytkownik;
  3.  
  4. $user->nazwa_uzytkowinka="imie";
  5.  
  6. $user->haslo="asdasd";
  7.  
  8. $user->dodaj_uzytkownika();
  9. ?>


Tego typu sposób natomiast jest dobry w przypadku, gdy masz "szeroką" (dużo kolumn) tabelę z użytkownikami i chcesz edytować jego dane:

  1. <?php
  2. $user = Użytkownicy::getData('nick');
  3.  
  4. $user->haslo="asdasd";
  5. $user->mail="foo@bar.pl";
  6. $user->gadu_sradu="542153422";
  7.  
  8. $user->update();
  9. ?>


Dużo wygodniejsze, bo edytujemy tylko te pola, które chcemy.


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
bim2
post 9.03.2009, 16:49:22
Post #5





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Jak już edytujecie to zrobcie to może tak

  1. <?php
  2. $oUser = new User(12); //lub new User('bim', 'name');
  3. $oUser->sPassword = md5('test123');
  4. $oUser->sMail = 'bim@gmail.com';
  5.  
  6. class User {
  7. public function __construct($sVal, $sCol = 'id')
  8. {
  9. //... pobranie z bazy
  10. $this->aData = $this->getRow('SELECT * FROM users WHERE `'.$sCol.'` = ''.$sVal.''');
  11. }
  12. public function __set($sWhat, $sOn)
  13. {
  14. $this->aData[$sWhat] = $sOn;
  15. }
  16. public function __destruct()
  17. {
  18. $this->oDb = Update('users', $this->aData, 'user_id = '.$this->iId);
  19. }
  20. }
  21. ?>


--------------------
Go to the top of the page
+Quote Post
marekaaa
post 9.03.2009, 17:06:29
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.03.2009

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


@bim2:

i jeśli chcę wyświetlić wszystkich użytkowników to jak to zrobić przy tej klasie?

Ten post edytował marekaaa 9.03.2009, 17:07:15
Go to the top of the page
+Quote Post
plurr
post 9.03.2009, 17:43:43
Post #7





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

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


nie wyciągaj bebechów na wierzch

do poczytania:
http://art-of-software.blogspot.com/2008/1...-smaczny-i.html


--------------------
Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe.

Albert Einstein
Go to the top of the page
+Quote Post
marekaaa
post 11.03.2009, 19:50:38
Post #8





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.03.2009

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


trudny ten tekst... chyba sobie jeszcze muszę poczytać o tej obiektowości po necie, nie jest to takie proste jak mi sie wydawało niestety
Go to the top of the page
+Quote Post
Quider
post 11.03.2009, 19:56:43
Post #9





Grupa: Zarejestrowani
Postów: 91
Pomógł: 9
Dołączył: 6.03.2009
Skąd: Katowice

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


Na wortalu jest artykuł jak napisać FRAMEWORK, to Ci pomoże pisać CMS. Bez szkieletu nie napiszesz CMS, a jeśli nie chcesz pisać skorzystaj z tych już napisanych jak CodeIngniter, CakePHP, czy Symfony. Wtedy będziemy gadać, czy dobrze rozumiesz obiektowość. Teraz to takie rzucanie grochem o ścianę: "a może się przebije".

Pozdrawiam


--------------------
www.quider.pl <- moja prywatna strona

Pomogłem? Kliknij Pomógł
Go to the top of the page
+Quote Post
PrinceOfPersia
post 19.04.2009, 00:03:57
Post #10





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


Cytat(marekaaa @ 8.03.2009, 20:35:30 ) *
1) klasa baza_danych, w niej metody obsługujące połączenie, rozłączenie z bazą i jedna wysyłająca zapytanie, które otrzyma jako argument.

2) klasa uzytkownik, obiektem tej klasy jest pojedyńczy uzytkownik(tak powinno być?), mam w niej zmienne: nazwa_uzytkownika, haslo. Metody: dodaj_uzytkownika, usun_uzytkownika, edytuj_uzytkownika.

Może być. Ale najważniejsze to to, żeby po prostu wygodnie było Ci się tym posługiwać i mógł łatwo wprowadzać zmiany w projekcie, a nie konkretne zmienne i metody.


[quote name='marekaaa' date='8.03.2009, 20:35:30 ' post='581425']
Zacząłem pisać prostego CMSa, nie jestem pewien czy dobrze rozumiem co powinno być obiektem, klasą, metodą.
[/quote ]
Co zechcesz. W programowaniu nie ma zazwyczaj jednego prawidłowego rozwiązania. Dany problem można zwykle rozwiążać na wiele różnych sposobów i od programisty i konkretnych potrzeb projektu zależy, które podejście obrać. Np. równie dobrze do obsługi bazy danych mógłbyś po prostu stworzyć po parę funkcji pomocniczych zamiast klasy i też byłoby dobrze. Dobrze, nie znaczy lepiej, tylko po prostu tak samo dobrze by Ci działała strona. Inna sprawa, że klasy i obiekty są częściej po prostu wygodniejsze w obsłudze dla programisty.

Tak samo do obsługi użytkowników równie dobrze mógłbyś mieć dwie klasy - osobno Uzytkownik i osobno Uzytkownicy, ale nic nie szkodzi na przeszkodzie, jeżeli Ci tak będzie wygodnie, żebyś kod do obslugi zarowno pojedynczego uzytkownika jak i całej listy uzytkownikow umieścił w jednej klasie Uzytkownik i pisać coś takiego:

Kod
Uzytkownik::pobierzWszystkich();


jak chcesz pobrac listę uzytkownikow, i coś takiego:

Kod
uzytkownik = Uzytkownik::aktualnieZalogowany();


jak chcesz pobrać tylko jednego uzytkownika. Rozumiesz, nie ma jednoznacznych rozwiązań. To nie egzamin w szkole, to programowanie.

Ten post edytował PrinceOfPersia 19.04.2009, 00:12:37


--------------------
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 Wersja Lo-Fi Aktualny czas: 28.03.2024 - 22:47