Autor Zpráva
dad
Profil *
Ahoj, napsal jsem si jednoduchou třídu na novinky a i když je to tak jednoduché tek si myslím, že to nemám moc správně. A proto se obracím na vás aby jste mi řekli, zda je to dobře popřípadě co upravit.

News.class.php

<?php
require_once (dirname(__FILE__).'/MyDb.php'); 
class News
{
     private $table;
     private $mysql;

     public function __construct(){
         $this->mysql = new MyDb();  
     }

     public function setDb( $table )
     {
            $this->table = $table;
     }

     public function getAllNews()
     {
            $sql = "SELECT * FROM ".$this->table;
            return $this->mysql->queryObject( $sql );     
     }
     
     public function getNews( $id )
     {
         $id = intval( $id );
         $sql = "SELECT * FROM ".$this->table." WHERE id = ".$id;
         return $this->mysql->queryObject( $sql ); 
     }

}
?>



index.php

<?php
    include 'news.class.php';
    $table = "news";
    $n = new News;
    $n->setDb( $table );
    $news = $n->getAllNews();
    foreach($news as $new){
      echo "<p>Nadpisky: <a href='detail-novinky.php?id=".$new->id."'>".$new->title."</a></p>";
    }
?>



Díky.
Nox
Profil
1) třída pro Zprávy vytváří objekt pro práci z DB (kterou navíc nijak nekonfiguruje -> ??)... to mě nepřijde moc dobré
2) setDB v třídě pro Zprávy, navíc setDB nastavuje tabulku, což je nelogické (nastavení tabulky by mj. mohlo být možné už v konstruktoru, bylo by o příkaz míň)
3) momentálně ta třída jen zprostředkuje nahrání zpráv z databáze, ale moc objekt to není...
nemá moc smysl ji instancovat ... kdyby třeba měla ještě proměnnou, kam by zprávy načetla...pak by mělo už trochu nějaký smysl ji instancovat a předávat jako argument
- stále by se ale objekt DB jí měl předat, neměla by ho vytvářet
(to nemluvim o tom že ve většině případů (aspoň na djpw) nebude mít víc jak 1 instance práce s DB (snad kromě testování) smysl... to až kdyby aplikace pracovala s několika databázovými servery naráz - o to víc by bylo logické DB objekt předat, anebo možná případně nějaký ještě vyšší systém co by spravoval připojení k databázím a dotaz by nějaké předal, to nevim, asi by pak záleželo na designu)
dad
Profil *
1) moc nechápu co tím myslíš ... ale asi se ptas jestli ji mám někde vytvořenou nebo jak?
2) no někde jsem to četl, že to je lepší to tak nastavovat (také mi to přišlo divné)
3) tak co mám udělat aby to bylo "více" oop?

Díky.
breeta
Profil *
Zdar, to co asi hledáš se jmenuje ORM object relational mapping, jsou na to různé frameworky jako NotORM, DIBI a další ....
dRaGen
Profil
breeta:
To si doufam nemyslel vážně, že NotORM a Dibi jsou ORMka ...

dad:
O co se snažíš je návrhový vzor ActiveRecord ovšem je to celkem nepěkné řešení a "nečisté" raději doporučuju prostudovat článek
Tím defacto zjistíš jak funguje Doctrine2 a můźeš jí začít používat
dad
Profil *
dRaGen: snažím se naučit oop, ale našel jsem jen starší články. Článek si určitě prostuduju. Kamarád mi doporučil knihu mistrovství php. Říkal, že více než polovina knihy je o oop. Nemáte nějaké novější články o oop? Popřípadě návrh na knihu, kterou bych si měl pořídít? Díky.
sodae
Profil
breeta: tímto jsi odrovnal nejen mě ale další lidi :-D, not orm => není orm, myslím že si název přímo o tom říká

dad: Tyto scripta myslím že jsou perfektní:
http://rapidshare.com/files/360111870/phpskripta.pdf

// Snad to není proti pravidlům dávat RS.com linky :-)
dad
Profil *
sodae:
Díky, to je super! Klidně posílejte další, dokumentace není nidky dost.
radas
Profil *
sodae:
rád bych Vám poděkoval, že jste dal k dispozici takový krásně zpracovaný material...
Mastodont
Profil
Skripta sice vypadají opravdu VELMI dobře a musela dát spoustu práce, ale přece jen v roce 2010 je session_register() a session_unregister() mimo mísu ...
Radovan789
Profil *
dad:
Nemáte nějaké novější články o oop?

Já jsem se to učil vtomto článku:
http://programujte.com/?akce=clanek&cl=2009113001-oop-v-php

Někteří píší že to není pro začátečníky dobrý článek ale já to pochopil.
dad
Profil *
A co knihy, jakou by jste mi doporučily, nejlépe přímo o oop. Jaký máte názor na knihu mistrovství php?
tatyalien
Profil
Na knihy bych se taky zeptal, protže co jsem koukal v krámu, tak je jich dost, ale většina je psaná na "javu" jako hlavní jazyk OOP, ale když už bych to kupoval, tak bych byl raději, aby to bylo s příkladama na PHP ;)
tatyalien
Profil
sodae:
Díky, udělal jsem si podle skript "fórum" a bylo to krásně psané... aspoň jsem viděl OOP v malé praxy ;)
(jen jsem si tam ty session trochu upravil...)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: