Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Klasy w php, jak zbudować strukturę?
neo1986kk
post 19.11.2011, 21:33:33
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


Witam, chciałbym się dowiedzieć jak najlepiej zbudować strukturę klas tzn. przedstawię 3 wersje i chciałbym się dowiedzieć, która z nich odpowiada standardom lub jest najlepsza do wykorzystania w projektach.

Wersja A

class.php
  1. class komentarze()
  2. {
  3. function getComment()
  4. {
  5. $sql=mysql_query("select * from komentarze");
  6. while($this->row=mysql_fetch_assoc($sql))
  7. {
  8. $this->display();
  9. }
  10.  
  11. }
  12.  
  13. function display()
  14. {
  15. echo 'komentarz to: '.$this->row['komentarz'];
  16. }
  17.  
  18. }


komentarze.php
  1.  
  2. $komentarze=new komentarze;
  3. $komentarze->getComment();
  4.  





wersja B

class.php
  1. class komentarze()
  2. {
  3.  
  4. function display()
  5. {
  6. echo 'komentarz to: '.$this->komentarz;
  7. }
  8.  
  9. }


komentarze.php
  1. $komentarze = new komentarze;
  2.  
  3. $sql=mysql_query("select * from komentarze");
  4. while($row=mysql_fetch_row($sql))
  5. {
  6. $komentarze->komentarz=$row['komentarz'];
  7. $komentarze->display();
  8. }



wersja C jest podobna do wersji b z tym że zmienia się plik komentarze.php

  1.  
  2. $i=0;
  3. $sql=mysql_query("select * from komentarze");
  4. while($row=mysql_fetch_row($sql))
  5. {
  6. $i=$i+1;
  7. $i= new komentarze;
  8. $i->komentarz=$row['komentarz'];
  9. $i->display();



Jeśli tu powinno być zupełnie coś innego to też napiszcie, chcę się nauczyć jak budować struktury klas, dlatego liczę na Waszą pomoc, z góry dziękuję i pozdrawiam.

Ten post edytował neo1986kk 19.11.2011, 21:34:12
Go to the top of the page
+Quote Post
Psajkus
post 19.11.2011, 21:41:53
Post #2





Grupa: Zarejestrowani
Postów: 45
Pomógł: 5
Dołączył: 26.06.2011

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


wybieram opcje D, czyli zupełnie coś innego
Go to the top of the page
+Quote Post
neo1986kk
post 19.11.2011, 21:42:42
Post #3





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


swietnie, a możesz ją przedstawić czy się zgrywasz?
Go to the top of the page
+Quote Post
Psajkus
post 19.11.2011, 21:50:05
Post #4





Grupa: Zarejestrowani
Postów: 45
Pomógł: 5
Dołączył: 26.06.2011

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


za Ciebie pisać nie będę. Możesz się wzorować na tym wpisie http://blog.fedecarg.com/2009/03/11/domain...-architectures/
Go to the top of the page
+Quote Post
neo1986kk
post 19.11.2011, 21:57:03
Post #5





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


z tego wynika ze najbardziej pasuje tutaj wersja A. Datego ze zapytanie mysql jest bezpośrednio w klasie.

  1. $komentarze=new komentarze;
  2. $komentarze->find() // dla wszystkich
  3. $komentarz=$komenatrze->current();
  4. echo $komentarze->display();
Go to the top of the page
+Quote Post
Psajkus
post 19.11.2011, 22:14:08
Post #6





Grupa: Zarejestrowani
Postów: 45
Pomógł: 5
Dołączył: 26.06.2011

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


Ja bym napisal 2 klasy. Repozytorium - operacje CRUD i inne zapytania do bazy danych i Encje przechowujaca dane.
Go to the top of the page
+Quote Post
neo1986kk
post 19.11.2011, 22:20:14
Post #7





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


brniesz za daleko, ja wiem że do zapytań można utworzyć nową klasę, ale nie o to mi chodzi, chodzi mi o samą strukturę a najbadziej o to czy tworzyc nowe klasy czyli

$klasa=new klasa
$a=a;

$klasa=new klasa
$a=b;

itd...

czy dac

$klasa = new klasa;

while($row=mysql_fetch_row($sql)
{
$a=$row[0];
}
Go to the top of the page
+Quote Post
by_ikar
post 20.11.2011, 01:11:59
Post #8





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Twórz nowe klasy które będą specjalizować tylko w określonych działaniach. Komentarze to powiedzmy jest jedno takie działanie, pobieranie komentarzy, pobieranie jednego wiersza, kasowanie, aktualizowanie, dodawanie czyli crud (create, read, update, delete) o którym wyżej napisał mój przedmówca. Newsy, artykuły, użytkownicy, sesje, baza danych. To wszystko to są osobne obiekty, każdy z nich robi co innego i za co innego jest odpowiedzialny. Tak więc pierwszy przykład w pierwszym poście jest w miarę poprawny, nie licząc tej bazy danych wink.gif

EDIT: chyba rozumiem o co ci chodzi w ostatnim poście. Tak więc zrobiłbym to mniej więcej tak:

Kod
<?php


class Komentarze
{
    protected $database;
    
    public function __construct(Database $database)
    {
        $this->database = $database;
    }
    
    public function findComentBy(array $criteria)
    {
        return $this->database->select()->from('coments')->where($criteria)->get();
    }
}

$newsComent = new Komentarze($polaczenieBazyDanych);

echo '<pre>'.print_r($newsComent->findComentBy(array('kategoria' => 'newsy', 'id' => 'id_newsa'))).'</pre>';


Czyli swoje kryteria wyszukiwania komentarzy podajesz w parametrze. Możesz nazwać te metody inaczej (getComent przykładowo), tutaj to jest tylko przykład.

Ten post edytował by_ikar 20.11.2011, 01:20:59
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: 16.07.2025 - 12:32