Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> co powinno byc obiektem w cms
marekaaa
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Właśnie dlatego postanowiłem zapytać zmaiast pisac dalej. Pozdrawiam!
Go to the top of the page
+Quote Post
blooregard
post
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. ?>
Go to the top of the page
+Quote Post
marekaaa
post
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
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.
Go to the top of the page
+Quote Post
bim2
post
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
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
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
Go to the top of the page
+Quote Post
marekaaa
post
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
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
Go to the top of the page
+Quote Post
PrinceOfPersia
post
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 06:45