[ BLACK_SWORD @ 17.07.2011. 18:48 ] @
Pozdrav!

Dali mi neko može reći jel dobra ova klasa?

Code:

<?php

class database
{
    private $link;

    function __construct($host, $user, $password, $base_name, $character_set)
    {
        $this->link = @mysql_connect($host, $user, $password)
            or die($this->error());

        mysql_select_db($base_name, $this->link)
            or die($this->error());

        mysql_set_charset($character_set, $this->link);
    }

    function __destruct()
    {
        mysql_close($this->link);
    }

    private function error()
    {
        return mysql_error($this->link);
    }

    public function query($sql, $return_format = 0)
    {
        $query = mysql_query($sql, $this->link)
            or die($this->error());

        switch($return_format)
        {
            case 1:
                $query = mysql_fetch_row($query);
                return $query;
                break;

            case 2:
                $query = mysql_fetch_array($query);
                return $query;
                break;

            case 3:
                $query = mysql_fetch_row($query);
                $query = $query[0];
                return $query;
                break;

            default:
                return $query;
                break;
        }
    }
}

?>

<?php

$db = new database('localhost', 'root', '', 'test', 'utf8');

$i = $db->query("SELECT `id_user` FROM `users` WHERE `id_user` = 1 ", 2);

echo $i['id_user'];

?>


sve radi kako treba, samo me zanima dali je ovo ispravno oop?

Hvala!
[ pajaja @ 17.07.2011. 22:18 ] @
Pozdrav,
pa te mysql_* funkcije nisu bas OO, pogledaj PDO.
[ BLACK_SWORD @ 17.07.2011. 23:00 ] @
e baš ne kontam nikako ovaj oop, kako god sam kreno praviti klasu za spajanje sa bazom uvijek neko nađe neku manu

dali valja vako?

Code:

<?php
    abstract class Database_Object
    {
        protected static $DB_Name;
        protected static $DB_Open;
        protected static $DB_Conn;

        protected function __construct($database, $hostname, $hostport, $username, $password)
        {
            self::$DB_Name = $database;
            self::$DB_Conn = mysql_connect($hostname . ":" . $hostport, $username, $password);
            if (!self::$DB_Conn) { die('Critical Stop Error: Database Error<br />' . mysql_error()); }
            mysql_select_db(self::$DB_Name, self::$DB_Conn);
        }

        private function __clone() {}

        public function __destruct()
        {
//            mysql_close(self::$DB_Conn);  <-- commented out due to current shared-link close 'feature'.  If left in, causes a warning that this is not a valid link resource.
        }
    }

    final class DB extends Database_Object
    {
        public static function Open($database = DB_NAME, $hostname = DB_HOST, $hostport = DB_PORT, $username = DB_USER, $password = DB_PASS)
        {
            if (!self::$DB_Open)
            {
                self::$DB_Open = new self($database, $hostname, $hostport, $username, $password);
            }
            else
            {
                self::$DB_Open = null;
                self::$DB_Open = new self($database, $hostname, $hostport, $username, $password);
            }
            return self::$DB_Open;
        }

        public function qry($sql, $return_format = 0)
        {
            $query = mysql_query($sql, self::$DB_Conn) OR die(mysql_error());
            switch ($return_format)
            {
                case 1:
                    $query = mysql_fetch_row($query);
                    return $query;
                    break;
                case 2:
                    $query = mysql_fetch_array($query);
                    return $query;
                    break;
                case 3:
                    $query = mysql_fetch_row($query);
                    $query = $query[0];
                    return $query;
                default:
                    return $query;
            }
        }
    }
?>
[ spezia @ 27.09.2011. 06:41 ] @
Nije mi jasno tvoje pitanje da li je dobra ili da li je oop?
Naravno da je oop, cim imas klasu i par metoda.
Pazi ovako: zamisli da je oop prevozno sredstvo.
Bicikl je prevozno sredstvo kao i avion. Ali bicikl je vrlo prost. Avion se krece brze, mozes da spavas u njemu, da gledas tv, rucas i itd.
Ti si napisao bicikl, a za tvoju aplikaciju ti treba nesto bolje i kvalitetnije. Skini sa neta imas dosta dobrih klasa. Pocetnik ne treba da pise klase jer nece napisati dobro sto se vidi i iz tvog slucaja. Pokusavas da glumis nekog sa par godina iskustva. Treba ti vremena. Ako hoces da naucis oop skini dobru klasu pa je analiziraj a ne da pises svoju.

A da li je dobro napisana svakako da nije.
1) To sto nema PDO znaci da nemas neki nivo znanja, tako da mislim da ne postoji savrsena klasa na svetu. Uvek nesto fali i slicno
2) Ovde u tvojoj klasi si pokazao mnogo neznanja planiranju klase i fali ti dosta oop funkcionalnosti, tako da se nadam da ti nece pasti na pamet da je negde koristis vec ti sluzi samo za vezbu.

To sto nisi shvatio oop, razlog lezi u tome sto si citao neke tutorijale i imas velike rupe i stvari su ti nepovezane prilicno. OOP je citav jedan princip, a gornji kod pokazuje kako ni pod razno ne treba programirati. Ovde je problem nacin razmisljanja a ne da li radi ili ne radi.
[ GMarco24 @ 27.09.2011. 10:58 ] @
Divan komantar, kakav svaki pocetnik voli da dobije
[ dakipro @ 27.09.2011. 11:04 ] @
Poceo sam i ja da pisem komentar na komentar al nisam hteo da budem grub pa sam ugasio browser na pola. Jedino konstruktivno u komentaru je da skine gotovu klasu da gleda, a kako je ovo forum za php pocetnike, zna on sam da ne zna dovoljno pa nema potrebe za tolikim potenciranjem da covek ne zna. To sto je postovao na forum i poceo sam da pravi klasu pokazuje da ima inicijative i zeli da uci, a to je cesto bitnije od iskustva, iskustvo se neminovno stice a inicijativa za ucenjem ne obavezno.

Molim ucesnike diskusije za buduce komentare primerene pocetnickom nivou znanja, ako neko nema sta konstruktivno da napise, neka se ne muci da kuca.
[ peca89bg @ 27.09.2011. 11:07 ] @
bravo daki :)
[ spezia @ 27.09.2011. 11:25 ] @
Greska je moja zaboravio sam na kom sam delu foruma, tako da kritika na znanje korisnika ne stoji. Tacno.
Glavni savet nije da skine klasu. Glavni savet je da krene drugacije da razmislja u boljem pravcu.