[ milosijaa @ 05.10.2006. 15:55 ] @
Pozdrav,

interesuje me da li neko zna gde se moze iskopati skolski primer razvoja PHP OOP aplikacije(nebitno sta radi ) koja ukljucuje sesije, template, MySql.

Bio bih Vam stvarno zahvalan da me neko uputi na nesto konkretno.

Googlao sam do besvesti i ono sto sam nasao je ili suvise jednostavno i ne ukljucuje navedene elemente, ili su aplikacije toliko velike i preskromno dokumentovane da ih je tesko razumeti.

unapred hvala
[ _BloB_ @ 09.12.2006. 15:09 ] @
Ma nije taj OOP nikakav vudu veruj mi.

koncentrisi se na pojedinacne klase:

1. DB klasa
2. klasa za autentikaciju korisnika (login)
3. klasa za podesavanja aplikacije (config - u fajlu ili u MySql bazi)
4. klasa za prikazivanje html templejta

itd itd..

nadji primere takvih pojedinacnih klasa, pregledaj kod, provali kako rade, probaj da napravis svoje, prostije verzije
takvih klasa, da sadrze samo one stvari koje TEBI trebaju...

jednu po jednu...

i onda posle samo kombinujes te klase u tvojim php skriptama/stranicama...

to je po meni sustina...

kada to savladas, i pocnes da koristis te klase u svakodnevnom radu, onda se desi 'klik' i pocnu da ti padaju
ideje za nove klase, nove upotrebe tih klasa, nasledjivanje...

tad mozes da se pozabavis sa MVC (Model View Controller) ili Design Pattern-ima....

znaci : korak po korak... ne mozes OOP skontati odjednom u celosti... to se znanje uci postepeno...

(makar je tako kod mene to bilo)...

e sad ako ti ovo pomaze super, ako ne... onda googlaj
[ milosijaa @ 12.12.2006. 19:44 ] @
Ja sam ovaj moj Topic vec otpisao posto mesecima niko da bilo sta napise :(..

U svakom slucaju hvala na savetima...

Kako sam se smorio od googlanja , skontao sam da je jedini nacin onaj koji si ti opisao. Tako da sam zasukao rukave i .... Nastao je neki WEB mail client, ne bas optimizvan ali radi :)) Jos uvek se radi na njemu..




[ _BloB_ @ 12.12.2006. 22:42 ] @
pa super je cuti da se nesto radi...

ajd kad budes imao sta pokazati - ti pokazi !

i podeli iskustva ujedno...

pozdrav
Blob
[ djordje @ 18.12.2006. 04:29 ] @
Mozete li da date primere nekih svojih klasa, reicmo za mysql konekciju. Ovo je neka moja koja nije ni dovrsena, ali nisam siguran da je uopste dobro koncipirana. Voleo bih da cujem komentare iskusnijih.

Code:
<?php

class MySQL_connection{

        var $conid;
        var $result; //Rezultat upita se smesta u ovu promenljivu
        var $host;
        var $username;
        var $password;
        var $dbname;
        var $error;
        var $debug; //ako je "1" prikazi greshke
        
        
////////////////////////////////////////////////////////////////////////////////
        function MySQL_connection($host_par = "127.0.0.1", $user_par = "root", $pass_par = "aaaaaaaa", $database, $display_errors = 0){ //constructor
                $this->debug = $display_errors;
                $this->host = $host_par;
                $this->username = $user_par;
                $this->password = $pass_par;
                $this->dbname = $database;
                
                $this->connect();
                $this->select_db($this->dbname);
        }
////////////////////////////////////////////////////////////////////////////////       
        function error_occurred($good_or_bad = 0){       //displays error depending on $debug variable, and stops entire script, 1 is bad, 0 is good
                if($good_or_bad==1){
                        if($this->debug == 0){
                                die();
                        }else{
                                die($this->error);
                        }
                }else{
                        if($this->debug == 1){
                                echo $this->error;
                        }
                }
        }      
////////////////////////////////////////////////////////////////////////////////
        function connect(){     //creates connection to database
                if(!($this->conid = @mysql_connect($this->host, $this->username, $this->password))){
                        $this->error = mysql_error();
                        $this->error_occurred(1);
                }else{
                        $this->error = "We are connected!! <br>";
                        $this->error_occurred(0);
                }
        }
////////////////////////////////////////////////////////////////////////////////
        function select_db($dbname_par){
                if(!@mysql_select_db($dbname_par, $this->conid)){
                        $this->error = mysql_error();
                        $this->error_occurred(1);
                }else{
                        $this->error = "Database $dbname_par is selected !!<br>";
                        $this->error_occurred(0);
                }
        }
////////////////////////////////////////////////////////////////////////////////
        function disconnect(){
                if(!@mysql_close($this->conid)){
                        $this->error = mysql_error();
                        $this->error_occurred(1);
                }else{
                        $this->conid = 0;
                        $this->error = "Connection closed!!<br>";
                        $this->error_occurred(0);
                }
        }
////////////////////////////////////////////////////////////////////////////////
        function query($sql){
                if(!$this->result = @mysql_query($sql, $this->conid)){
                        $this->error = mysql_error();
                        $this->error_occurred(1);
                }else{
                        $this->error = "Query executed!! <br>";
                        $this->error_occurred(0);
                }
        }
////////////////////////////////////////////////////////////////////////////////
        function fetch_row(){
                if(!$row = @mysql_fetch_row($this->result)){
                        return false;
                }else{
                        $this->error = "Row fetched!! <br>";
                        $this->error_occurred(0);
                        return $row;
                }
        }
////////////////////////////////////////////////////////////////////////////////
        function rows_affected(){
                return mysql_affected_rows($this->conid);
        }
};


?>



[Ovu poruku je menjao djordje dana 18.12.2006. u 18:54 GMT+1]
[ _BloB_ @ 18.12.2006. 07:28 ] @
pa nije lose uopste, mada ja bih odvojio Connection u posebnu klasu od DBLayera...
jer DBConnection ti moze zatrebati za razne klase...

napravis DBConnectionClass i onda nju ubacis u svaku klasu koja se bavi bazama.
(ja trenutno imam 3 klase koje koriste DBCOnnection clasu)
MyDbLayer
MyDbPagingLayer
MyDbActiveRecordClass

a imam i MyDbResult

e sad sve te klase primaju u konstruktoru instancu MyDbConnection i koriste je za svu komunikaciju sa serverom...

a da ne bude da krijem kod evo saljem: (doduse php5)
Code:


  class MyDBConnection
  {
    protected  $host = null;
    protected  $username = null;
    protected  $password = null;
    protected  $database = null;

    protected  $link = false;


    public function __construct($params = array())
    {
      set_magic_quotes_runtime(false);
      $this->parseConnectionParameters($params);
      $this->connect();
    }

    function __destruct()
    {
      //print(__CLASS__."destructor<br>.");
      //if ($this->isReady())
      //  @mysql_close($this->link);
    }


    public function connect($params = array())
    {
      $this->parseConnectionParameters($params);

      $this->link = @mysql_connect($this->host,$this->username,$this->password);

      if (!$this->isReady())
      {
        throw new Exception("Cannot connect to DB server.");
      }

      if (!is_null($this->database))
        {
          $this->selectDatabase();
        }

    }

    private function parseConnectionParameters($params)
    {
      if (!is_array($params))
        return;

      if ( (isset($params['host'])) && (!is_null($params['host'])) )
        $this->host = $params['host'];

      if ( (isset($params['username'])) && (!is_null($params['username']))  )
        $this->username = $params['username'];

      if ( (isset($params['password'])) && (!is_null($params['password'])) )
        $this->password = $params['password'];

      if ( (isset($params['database'])) && (!is_null($params['database'])) )
        $this->database = $params['database'];
    }

    public function selectDatabase($dbname = null)
    {
      if (!is_null($dbname))
        $this->database = $dbname;

      if (strlen(trim($this->database)) <= 0)
        throw new Exception("Cannot open database if desired DB name is not supplied.");

      if (!$this->isReady())
        throw new Exception("Cannot open database because not connected to DB server.");

      if (!mysql_select_db($this->database, $this->link))
      {
        throw new Exception("Cannot open database `$this->database` on DB server.");
      }
      else
        return true;
    }

    public function isReady()
    {
      if ( (!isset($this->link)) || (!$this->link) || (!is_resource($this->link)) )
        return false;
      else
        return true;
    }

    public function getLink()
    {
      if (!$this->isReady())
        throw new Exception("No valid DB link identifier to return.");
      else
        return $this->link;
    }


  }



ako te zanimaju i ostale klase moze i to...

vec dugo radim na ovome i sto puta sam vec pisao iznova sve ove klase...
trenutno mi se cini da je ovo najbolji pristup (nekada nisam odvajao DBConnection u klasu) mada ko zna u buducnosti
na sta ce sve to da izadje

ajd poz
UncleBlob
[ djordje @ 18.12.2006. 18:18 ] @
E sad, kako razdvajate dizajn od programiranja? Mislim na vas kod a ne na smarty i slicno. Dakle neki vasi primeri template engine-a ali OO. Meni su ta dva sloja previse povezana, pa bih voleo da vidim kako vi to razdvajate
[ b0ris @ 27.04.2007. 00:11 ] @
Izvini nisam ranije video ovu temu. Jedno pitanje za pocetak da li znas OOP?
ako neznas iluzorno je da ti bilo ko daje skolski primer, prvo dobro savladaj oop. Posveti mu duznu paznju.
Ako znas bar osnove oop bicu vrlo rad da ti napisem sam skolski primer, kroz koji zajedno mozemo da prodjemo.
Pozdrav
[ djordje @ 27.04.2007. 00:41 ] @
Sam koncept OOP mi je veoma blizak, ali u C++. Za nijansu drugaciji nacin razmisljanja je potreban za web programiranje. MEdjutim, u medjuvremenu sam napisao svoju template parser klasu koju koristim za potpuno razdvajanje dizajna od logike. Sada mi vise pomoc nije toliko potrebna, ali svakako bi bilo fino da izneses svoja znanja i iskustva ovde ako nisu tajna ;)

Ja ne zelim da iznesem jos uvek svoju template parser klasu ovde jer je trenutno prilicno neoptimizovana, i verovatno sporija od mnogih koje se na netu mogu naci.
[ b0ris @ 27.04.2007. 01:05 ] @
Mogli bi smo zajedno da napisemo jedan skolski primer koriscenja klasa? Pa da ga okacimo. Svidja mi se ideja posto bi radili nezavisno. Recimo da napravimo jednostavan log in/out i prikaz toga u tabeli nista vise. Mislim da bi primer bio dobar i dovoljan.

oftopic:
@djordje
sry djordje post je bio upucen milosiju. Inace ne pravim template ako bas ne moram. Volim da sve odradim ispocetka, ako nista dobijam na brzini, pored toga sto uvidim i milion propratnih gresaka u kodu i nacina da se nesto optimizuje.
Sto se tice template parser klase. Time se jos nisam opterecivao. U php-u programiram tek neko neznatno vreme, otprilike 10 meseci.
Slazem se da je koncept OOP u webu znatno izmenjen. Jos uvek i sam pokusavam da shvatim na koji nacin da koristim OOP u web programiranju a da bude najoptimalnije. Vise volim c++, to mi je ipak prva ljubav :)
Inace koristim smarty, smatram da je sasvim ok. Imam par ideja kako bih napisao svoj ali trenutno se time nebavim. Vise pokusavam da realizujem dobar forum. :)

[ milosijaa @ 02.05.2007. 11:16 ] @
@ boris

Izvini nisam ranije video ovu temu.Pa gde gledas covece?? :)just kidding Jedno pitanje za pocetak da li znas OOP?Uglavnom sam ga sazvakao radeci u JAVI, a sada sam ga dokusurio u PHP-u
ako neznas iluzorno je da ti bilo ko daje skolski primer, prvo dobro savladaj oop. Posveti mu duznu paznju.
Ako znas bar osnove oop bicu vrlo rad da ti napisem sam skolski primer, kroz koji zajedno mozemo da prodjemo. Ovo je bas prijatno iznenadjenje. Lepo je znati da ima ljudi poput tebe, ali ne hvala nije potrebno. Resio sam svoj problem:)


Pozdrav
[ b0ris @ 02.05.2007. 12:18 ] @
Znam oop jako dobro :)
Al sam mnogo dobar pa sam hteo da malo pomognem i drugima, meni je to mizerija utrosenog vremena, a nekom znaci mnogo. Kad sam imao problema i nisam mogao da nadjem nikoga ko zna da ih resi, KOLIKI je to bio cim. Sad ti problemi izgledaju mizerno :D.
Te ako znam nesto rado cu da pomognem :)