Dobrodošli, goste ( Prijava | Registracija )

4 - broj stranica V   1 2 3 > »   
Reply to this topicStart new topic

Kratak uvod u OO PHP, Objektno Orijentisani PHP

V
kodi
poruka May 5 2009, 21:40
Poruka #1




Grupa: Admin
Poruke: 2,690
Datum reg.: 10-February 05
Lokacija: $52/hour
Član broj: 245



Ova tema sluzi kao kratak tutorijal Objektno Orijentisanog nacina programiranja u PHP-u.
Takodje svrha teme je da pomogne ljudima da shvate osnovne pojmove, kao i razliku u odnosu na obicno (proceduralno) programiranje.
Na kraju cilj je da sto vise ljudi prihvati ovakav nacin programiranja, jer na kraju guramo vec skoro desetu godinu 21. veka smile.gif

Trudio sam se koliko sam mogao da sve bude na Srpskom, neke stvari se jako tesko ili skoro nikako prevode, ako neko ima nekih predloga nek slobodno iznese..



Uvod: Zasto OO?

Zato! smile.gif

Razloga stvarno ima milion:
- kod se lakse odrzava
- kod sam sebe objasnjava (dobro dodje kad otvoris projekat od pre 2 godine)
- veca kontrola nad kodom (videti 1.4)

Postoji urbani mit da OO PHP usporava vase skripte, taj mit je delimicno istinit, ali je to "usporenje" toliko minorno da se u 99.99% slucajeva opusteno moze zanemariti.
Sa druge strane benefit je ogroman.


1) Osnove i Pojmovi

Za pocetak, posto ljudi stalno mesaju pojmove funkcija, klasa, metoda, objekt, varijabla, property....
Da malo objasnimo stvari


1.1 Klase
--------------------------------------------------

Ovo je primer klase
CODE
Class Pas{

    private $telefonVlasnika;
    public $ime;
    
    function podesiImePsa($ime){
        $this->ime=$ime;
    }
    
    function podesiTelefonVlasnika($brojTelefona){
        $this->telefonVlasnika=$brojTelefona;
    }
    
    function procitajTelefonVlasnika(){
        return $this->telefonVlasnika;
    }
    
    function podesiRasu($rasaPsa){
        $rasa='Rasa Podesena na: '.$rasaPsa;
        $this->rasa=$rasaPsa;
        
        return $rasa;
    }
}



1.2 Objekti
--------------------------------------------------

Klasa je samo nacrt, definicija kako objekat treba da izgleda.
Da bi mogli da koristimo sam objekat moramo prvo da ga inicijalizujemo

CODE
$mojPas=new Pas();


$mojPas je objekt
$mojPas je instanca klase Pas
$mojPas nije klasa




1.3 Metode
--------------------------------------------------
sada cemo podesiti ime i telefon vlasnika psa

CODE
$mojPas->podesiImePsa('Rex');
$mojPas->podesiTelefonVlasnika('+381 66 666 666');


podesiImePsa() i podesiTelefonVlasnika() su metode klase, ne funkcije iako ispred njih u definiciju klase stoji function



1.4 $this
--------------------------------------------------
Jedna od najvecih prepreka pocetnicima pri ucenju prestavlja famozna $this pseudo-varijabla
posto smo property ime i telefonVlasnika definisali van metoda da bi smo im pristupili unutar metode moramo staviti $this->ime

takodje ako iz jedne metode pozivamo drugu, to isto radimo sa $this->nekaDrugaMetoda();

$this je najlakse shvatiti kao link ka metodama i propertijima objekta.
takodje, u okviru metoda mozete definisati normalne varijable, za recimo privremene operacije
CODE
    function podesiRasu($rasaPsa){
        $rasa='Rasa Podesena na: '.$rasaPsa;
        $this->rasa=$rasaPsa;
        
        return $rasa;
    }


$rasa i $this->rasa uopste nisu iste varijable.

CODE
echo $mojPas->podesiRasu('opak Pas'); // vraca: Rasa Podesena na: opak Pas
echo '<br />';
echo $mojPas->rasa; // vraca: opak Pas


takodje ne postoji nacin da pristupite lokalnoj (obicnoj varijabli) jednom kad se objekat inicijalizuje, osim da je vratite kroz return

naprimer da smo imali jos jednu varijablu u okviru metode podesiRasu()
recimo $proba='pboba'; kasnije ne bi smo mogli da mu pristupimo kroz inicijalizovan objekat. tj $mojPas->proba nece vratiti nista.


1.5 Object properties
(ne znam kako se ovo prevodi u domacoj literaturi)
--------------------------------------------------

$ime i $telefonVlasnika su properties, to mu dodje kao varijable u proceuralnom programiranju s tim da ovde
imate vecu kontrolu. kontrola se odnosi na public - private svojstva propertija.
primeticete da je ispred imena public a isred broja telefona private

ako ispod ovoga ubacimo sledeci kod
CODE
echo $mojPas->ime; // ovo vraca Rex
echo $mojPas->telefonVlasnika; // ovo vraca Fatal error: Cannot access private property Pas::$telefonVlasnika


to znaci da propertiju telefonVlasnika ne moze pristupiti direktno, vec samo preko metode koja vraca taj property
takodje mozemo direkno menjati public propertije

CODE
$mojPas->ime='Rex Prvi';
echo $mojPas->ime; // ovo vraca Rex Prvi


ako to isto pokusamo za telefonVlasnika

CODE
$mojPas->telefonVlasnika='+381 66 999 999'; // ovo vraca Fatal error: Cannot access private property Pas::$telefonVlasnika


da bi smo procitali property koji je private moramo napisati metodu koja ga vraca, u nasem slucaju to je procitajTelefonVlasnika().
CODE
echo $mojPas->procitajTelefonVlasnika(); //vraca: +381 66 666 666

Go to the top of the page
 
+Quote Post
kodi
poruka May 5 2009, 21:44
Poruka #2




Grupa: Admin
Poruke: 2,690
Datum reg.: 10-February 05
Lokacija: $52/hour
Član broj: 245



Toliko za prviu lekciju
evo i cele skripte
CODE
<?php

Class Pas{

    private $telefonVlasnika;
    public $ime;
    
    function podesiImePsa($ime){
        $this->ime=$ime;
    }
    
    function podesiTelefonVlasnika($brojTelefona){
        $this->telefonVlasnika=$brojTelefona;
    }
    
    function procitajTelefonVlasnika(){
        return $this->telefonVlasnika;
    }
    
    function podesiRasu($rasaPsa){
        $rasa='Rasa Podesena na: '.$rasaPsa;
        $this->rasa=$rasaPsa;
        
        return $rasa;
    }
}



$mojPas=new Pas();

$mojPas->podesiImePsa('Rex');
$mojPas->podesiTelefonVlasnika('+381 66 666 666');

echo $mojPas->ime; // ovo vraca Rex
echo '<br />';

//echo $mojPas->telefonVlasnika; // ovo vraca Fatal error: Cannot access private property Pas::$telefonVlasnika


$mojPas->ime='Rex Prvi';
echo $mojPas->ime; // ovo vraca Rex Prvi
echo '<br />';

//$mojPas->telefonVlasnika='+381 66 999 999'; // ovo vraca Fatal error: Cannot access private property Pas::$telefonVlasnika
echo $mojPas->procitajTelefonVlasnika(); //vraca: +381 66 666 666
echo '<br />';


echo $mojPas->podesiRasu('opak Pas'); // vraca Rasa Podesena na: opak Pas
echo '<br />';
echo $mojPas->rasa; //vraca: opak Pas


?>


dve linije su zakomentarisane jer vracaju fatal error, mozete otkomentarisati i probati
Go to the top of the page
 
+Quote Post
stain
poruka May 6 2009, 00:28
Poruka #3




Grupa: Članovi
Poruke: 507
Datum reg.: 10-November 06
Lokacija: Novi Beograd
Član broj: 7,276



evo dok kodi ne napishe evo malog tizera, u dve rechenice sazeto o $this-u
U objektno orijentisanom programiranju, da uprostim, pored rada sa variablama korste se i objekti koji su isto kao i varijable zapisani u radnoj memoriji i prestavljaju instance svojih klasa.Unutar definicije klase property-ima i metodama pristupamo preko $this-> (ovde govorim o php-u da se razumemo) i bash to $this predstavlja instacirani objekat...nzachi iz onog primera imamo objekat klase pas koji se zove moj pas i to $this predstavlja mog psa, znachi u kodu pozivam metode mog psa koristeci $this->neshto_neshto , shto kad bi se prevelo na srpski zvuchalo Ovo je moj pas, njegovo->ime je Rex, njegov->gazdaBrTel je xx-xxx-xxx...znam da je sve to konfuzno sad....teshko je obasniti nekome ko ne zna samu srz programiranja.Evo da pokusham da objasnim josh neshto. Postoji josh jedan operater :: , zaboravih kako se zove na srpskom ali na engleskom je scope operator, kada se koristi self::neki_metod_static_property ili parent::neki_metod_ili_static_property poziva se metod ili property direktno iz klase a ne iz objekta...uf, a mislio sam da cu lako da objasnim u dve rechenice, valjda nisam josh vishe zbunio sad.gif



edit: sad vidim da je i kodi objasnio $this...ma nek ide zivot......
Go to the top of the page
 
+Quote Post
kodi
poruka May 6 2009, 01:01
Poruka #4




Grupa: Admin
Poruke: 2,690
Datum reg.: 10-February 05
Lokacija: $52/hour
Član broj: 245



@stain, premestio sam ti poruku iz one teme,

@ostali - slibodno ako imate pitanja u vezi ovoga, ili generalno u vezi OOP pitajte ovde pa cu se ja ili neko drugi potruditi da vam to objasnim.
Go to the top of the page
 
+Quote Post
buger
poruka May 8 2009, 19:34
Poruka #5




Grupa: Članovi
Poruke: 793
Datum reg.: 20-January 05
Lokacija: Pancevo
Član broj: 78



da li php podrzava dot notation ($this.telefonVlasnika), i ako podrzava, da li je preporucljivo tako pisati kod, koliko ljudi uopste pise tako ?

skoro sam uzeo da citam malo o php-u, nisam jos nasao vremena da se malo igram. vise me zanima kako on radi under-the-hood, sta se desava nakon izvrsenja php skripte, sta se desava ispod haube kada vise korisnika poziva isti php fajl, da li se mogu u memoriji cuvati neki podaci nevezano za sesiju (npr da li je moguce napraviti page visit counter bez da se taj podatak zapisuje igde), kako sesije ulaze u ovu pricu sa OOP-om itd.

jel postoji neki guide za one koji ne zele da uce programiranje nego bi samo da ulete u php? neki cheat-sheet, best practices?

takodje, sto se tice i MySql-a, da li postoji neki guide koji pokriva sve na sta treba paziti sto se tice sigurnosti ?

mozda bi bilo dobro da se komentari prebace u drugu temu a ova da se ostavi samo za kodijeve postove
Go to the top of the page
 
+Quote Post
kodi
poruka May 8 2009, 20:20
Poruka #6




Grupa: Admin
Poruke: 2,690
Datum reg.: 10-February 05
Lokacija: $52/hour
Član broj: 245



nema dot notation

mora $this->param
ili $this->method();

mada moze iz metode da se poziva sa self::otherMethod i parent::parentMethod();


sto se tiche in memory i vise usera za jednog korisnika
postoji APC .... to je extenzija, mada ce postati deo php6
APC je opcode cache, tj ako neko jednom pozove fajl od ga kesira u memoriji i ne kompajlira u run time-u svaki put

APC takodje moze da drzi coutere u mem ali je to bad practice, jer ako se restartuje server to ode smile.gif
U APC se obicno ucitavaju parametri konfig fajla ili konekcije ka bazi posto se ti fajlovi obicno ucitavaju na svaki reload pa ti se najvise isplati da njih stavis u mem

takodje postoji i memcached, koji ima odlicnu podrsku za php, koji je (ukratno) ogromna distribuirana hash tabela

CITAT
The system is used by several very large, well-known sites including YouTube[2], LiveJournal, Wikipedia/Wikimedia, Wikia, SourceForge, Metacafe, Facebook[3] [4], Digg, Twitter[5], Fotolog, The Pirate Bay[6] and Netlog.[7]


sto se tiche literature, skroz cool su sitepointove knjige

http://www.sitepoint.com/books/phpant2/
http://www.sitepoint.com/books/phpant1/

(takodje su skroz u duhu topic-a)
Go to the top of the page
 
+Quote Post
zlatiborac
poruka May 17 2009, 19:01
Poruka #7




Grupa: Članovi
Poruke: 2,795
Datum reg.: 21-January 05
Lokacija: Zlatibor
Član broj: 92



Poshto sam reshio da radim neki sajt(ove) iznova krenuh sa radom jer znajuci da cu tako najlakshe skuziti neke stvari. CodeIgniter stoji u pozadini za neki drugi projekat sad hocu ruchno da uradim jedan prostiji sajtic, vezbe radi.
Problem se javio u medjusobnoj komunikaciji unutar same klase, tj. medju metodama.
Naime unutar klase imam nekoliko metoda koji ponaosob rade specifichne stvari kod kreiranja stranice. Pridrzavajuci se pravila da svaka metoda treba da radi samo jedan posao tako sam i zapocheo rad. Medjutim shta kada treba rezultat koji je jedna metoda dobila prebaciti unutar druge koja npr. generishe html kod. Dacu vam prost primer:

Metoda _createBody() - njena uloga je da kreira HTML kod web stranice...
CITAT
function _createBody()
{
$this->page = <<<EOD
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head>
<title> ************ </title>
</head>
<body>
</body>
</html>
EOD;
return $this->page;
}


Metoda _getPageTitle() - ovde je npr. prost return ali na pravom sajtu ona bi dobijala svoj rezultat iz baze.
CITAT
function _getPageTitle()
{
return "Ovo je naslov nashe stranice";
}


Hteo bih rezultat metode _getPageTitle() da ubacim u prvu metodu _createBody() na mesta gde su ****** i nece da radi.
Ukoliko probe radi unutar konstruktora definishem $this->pageTitle = "Naslov moje strane" (kako se sove ovo; property atribut.. ???) i ubacim ga unutar metode kao $this->pageTitle ono radi OK.
Verujem da je problem u nasledjivanju iliti scope-u ali josh nisam radio sa time tako da cjenim svaku pomoc...
Eto, taman ideja Kodiju za drugi deo nastavka smile.gif
Go to the top of the page
 
+Quote Post
kodi
poruka May 17 2009, 20:07
Poruka #8




Grupa: Admin
Poruke: 2,690
Datum reg.: 10-February 05
Lokacija: $52/hour
Član broj: 245



eh, pogazio si prvi i najbitniji princip: razdvajanja koda i prezentacije smile.gif

ovo se jednostavno ne radi ovako, evo skica boljeg nacina, mada opet daleko od savrsenog:

recimo da radis stranicu aboutUs i da link vodi na /about.php

tu imas seledeci kod:
CODE
<?php

include('Template.php');

error_reporting(E_ALL);
$secret='neka velika tajna';

//----------------------


//inicijalizuj template klasu
$template=new TemplateEngine();
    
$title='Nas Divni Title'; // ovo moze da dodje iz baze, ili bilo kog izvora

// dodeli
$template->assign('pageTitle',$title);
    
//render template
$template->render('about.tpl');

?>


zatim imas sam template, about.tpl
CODE
<html>
<html>
<head>
    <title><?php echo $this->v_pageTitle; ?></title>
</head>
<body>
<h2>Helooo :]</h2>

<?php echo $secret; ?>
</body>
</html>


i na kraju najprostiju mogucu klasu za render templejta i dodelu varijabli
Template.php

CODE
<?php
class TemplateEngine{
    public function assign ($name='', $value='' ){
        //dodela vrednosti, sa tim sto cemo dodati prefix v_ ispred
        $name='v_'.$name;
        $this->$name=$value;
    }
    
    function render($templateName){
        include_once($templateName);
    }

}
?>


znaci u cemu je poenta:
NIKAD, ALI NIKAD ne smes imati html kod u php fajlovima.
prvo pravilo.

Ovako uvek mozes da das nekom peri da ti sredjuje templejte, css, da radi redizajn i sve sto on treba da zna od php-a je da ne dira ono sto je unutar <?php ?> ili eventualno da uradi echo i MOZDA foreach... a to se nauci za 4 minuta.

druga stvar je sto se iz template fajlova moze pristupiti SAMO propertijima koje si ti dodelio preko metode assign
(pokusaj da se uradi echo $secret baca warning )

tipa ako hoces da preneses broj proizvoda iz neke kategorije, recimo televizora
u php fajlu
CODE
$tvCoount= // pa izvadis iz baze broj
$template->assign('brojTelevizora',$tvCount);


a onda u tpl fajlu uradis
CODE
<p>Ukupno televizora: <?php echo $this->v_brojTelevizora; ?></p>


mozda na pocetku deluje kao overkill... i mozda ti smeta sto za sve moras da imas 2 fajla.. ali jbg, tako treba
tako mora smile.gif

e sad implementacija na tebi, mozes od pocetka svoj template engine da pises, mozes da nadogradjujes ovu jednostavnu klasu... mozes da koristis smarty ....
Go to the top of the page
 
+Quote Post
kodi
poruka May 17 2009, 20:13
Poruka #9




Grupa: Admin
Poruke: 2,690
Datum reg.: 10-February 05
Lokacija: $52/hour
Član broj: 245



takodje svestan sam da ovo i nije bas najdirektniji odgovor na tvoj problem, ali ako imas problema o komunikaciji izmedju metoda, daj neki drugi primer, nesto sto ne ukljucuje HTML smile.gif

njemu jednostavno nije mesto tu, on ide u template fajlove, oni su V (view) u MVC i moraju biti odvojeni od koda.

neki pametni ljudi mnogo pre mene rekli tako. smile.gif


----------------------------

evo kratak primer
CODE
<?php
Class Test{
    
    function prikaziRezultat(){
    
        $output='Rezultat iz baze: '.$this->izBaze();
        return $output;
    }
    
    function izBaze(){
    
        $nestoIzBaze=' 145 proizvoda!';
        return $nestoIzBaze;
    }


}



$t=new Test();
$zaPrikaz = $t->prikaziRezultat();

echo $zaPrikaz; // ovo vraca: Rezultat iz baze: 145 proizvoda!

?>
Go to the top of the page
 
+Quote Post
Milos Jankovic
poruka Jun 19 2009, 23:50
Poruka #10




Grupa: Članovi
Poruke: 102
Datum reg.: 13-February 06
Član broj: 3,357



procitah ovo, ali i dalje ne shvatam koja je razlika izmedju oop i proceduralnog, bas sam tupav sad.gif
ali hajde da vidimo, glavni razlog za primenu oop-a je da se razdvoji php kod od templejta? i onda se u templejt samo doda neka funkcija ili klasa koja izvrsava to, tako da gore pomenuti pera smile.gif na mesto menija treba da doda samo <?php echo function(); ?>?

da li je wordpress uradjen na nacin oop-a? jel ako jeste onda je dobro, jer ja sve vreme koristim oop a nisam ni svestan toga biggrin.gif

i ove klase ne kapiram bas... jel one u sustini predstavljaju grupaciju vise funkcija?

ufff, pitanja su stvarno bez veze, ali ako to razjasnim bice mi mnogo lakse smile.gif

dopuna:
kodi u prvom primeru si na 2 razlicita nacina uneo ime psa:
CODE
$mojPas->podesiImePsa('Rex');
$mojPas->ime='Rex Prvi';

e sad, meni je nekako logicnije da se ide preko funkcije, jer u toj funkciji mozda ima jos parametara koji treba da dobiju tu vrednost. da li mi je razmisljanje ispravno ili je sve jedno kako se unose podaci?
Go to the top of the page
 
+Quote Post
kodi
poruka Jun 20 2009, 00:53
Poruka #11




Grupa: Admin
Poruke: 2,690
Datum reg.: 10-February 05
Lokacija: $52/hour
Član broj: 245



to sam stavio da pokazem da ako je property public da ga mozes podesiti i direktno.. ako je private (kao nprm telefon) onda ne moze direktno vec preko metode (sto bi ti reko funkcije)...

glavni benefit nije razdvajanje, tome sluze template engine.. glavni benefit je bolja organizacija i lakse odrzavanje (posebno na vecim projektima)

i takodje, to tako treba jer ja tako kazem biggrin.gif
samo mi veruj na rec biggrin.gif
Go to the top of the page
 
+Quote Post
r3d
poruka Jun 20 2009, 05:23
Poruka #12




Grupa: Članovi
Poruke: 230
Datum reg.: 18-June 09
Lokacija: Banja Luka
Član broj: 30,407



CITAT (Milos Jankovic @ Jun 20 2009, 00:50) *
CODE
$mojPas->podesiImePsa('Rex');
$mojPas->ime='Rex Prvi';

e sad, meni je nekako logicnije da se ide preko funkcije, jer u toj funkciji mozda ima jos parametara koji treba da dobiju tu vrednost. da li mi je razmisljanje ispravno ili je sve jedno kako se unose podaci?


Well, kada imas deklarisanu public varijablu sigurno neces pisati funkciju(method) u kojoj se samo ona unosi, to je stavio kao primjer.
Deklarises je na pocetku koda i koristi je vise funkcija.
Ako tu varijablu treba mijenjati kasnije, onda mislim da je prilicno svejedno da li ces je ponovo mijenjati direktno ili ces dodavati jos jedan parametar funkcijama!
I da, zarad cistoce controllera, kad ako imas vise od jedne varijable, da ne bi pisao

CODE
$klasa->var1 = '1';
$klasa ->var2 = '2';
$klasa->var3 = '3';
$klasa->method()


ubacis sve u method...

CODE
$klasa->method('1', '2', '3');


pa poslije u methodu razvrstavas sta je sta!
Go to the top of the page
 
+Quote Post
Milos Jankovic
poruka Jun 20 2009, 12:16
Poruka #13




Grupa: Članovi
Poruke: 102
Datum reg.: 13-February 06
Član broj: 3,357



hvala vam puno, sad mi je jasno! skapirao sam kako klase rade, samo imam problem jer jos ne mogu da zamislim kako klase funkcionisu sa recimo login formom. evo gledam jedan tutorial, ali ga ne kapiram bas...
Go to the top of the page
 
+Quote Post
kodi
poruka Jun 20 2009, 12:22
Poruka #14




Grupa: Admin
Poruke: 2,690
Datum reg.: 10-February 05
Lokacija: $52/hour
Član broj: 245



samo polako.. ako ima problema pitaj ovde.
takodje mozes da nam das link do tog tutorijala, da vidimo da li je dobar...
Go to the top of the page
 
+Quote Post
r3d
poruka Jun 20 2009, 15:52
Poruka #15




Grupa: Članovi
Poruke: 230
Datum reg.: 18-June 09
Lokacija: Banja Luka
Član broj: 30,407



Klase sa loginom funkcionisu kao i bilo sta drugo sa loginom - posaljes unesene podatke nekom methodu klase, tj.

CODE
$klasa->login($username, $password)


Zatim ih u login methodu filtriras (stripslashes, mysql_real_escape_string), pogledas ima li u bazi korisnik sa tom username/password kombinacijom i selektujes ga, zatim uneses u session ili cookie njegove podatke pa iste proveravas na pocetku svake stranice sa nekim methodom - $klasa->checkLogin() - else redirektujes na login (ili includujes login formu), ako je nesto petljano sa cookiem (tj. setovan je username/password ali ne postoji ta kombinacija u bazi) izbacis neki warning, ako je sve super, izlistas neke podatke, npr. dobrodosli $korisnik, poslednji put ste nas posjetili $datumvrijeme itd itd smile.gif
Ako treba detaljnije, da se napise neki step-by-step tutorial, reci!
Go to the top of the page
 
+Quote Post
Milos Jankovic
poruka Jun 20 2009, 21:25
Poruka #16




Grupa: Članovi
Poruke: 102
Datum reg.: 13-February 06
Član broj: 3,357



znam kako da napravim login skriptu... ja to radim sa formom koja redirektuje na stranicu checklogin.php gde varijable prodju kroz stripslashes i mysql_real_escape_string i onda se samo proveri da li postoji u bazi, ako postoji, sesija se registruje, ako ne ispisuje se poruka o gresci i to je to, jako jednostavno u 15-ak redova.

e sad tutorial za login koji je radjen ds klasama je ovaj. iskren da budem ja tu ne kapiram skoro nista... inace kad sam ucio pre nekoliko meseci bas login, radio sam sa ovim tutorialom.

sad meni je malo glupo da trazim, ali bilo bi mi od velike koristi ako bi neko mogao da napravi neku login skripticu ili bilo kakvu skriptu koja radi sa mysql bazom da vidimo kako to radi na delu smile.gif

i hvala puno na strpljenju!
Go to the top of the page
 
+Quote Post
stain
poruka Jun 20 2009, 23:19
Poruka #17




Grupa: Članovi
Poruke: 507
Datum reg.: 10-November 06
Lokacija: Novi Beograd
Član broj: 7,276



de nadje onaj tutorial laugh.gif
Iz svega ovoga shto pishesh vidim da si bash zbunjen, imam utisak da ti mislish da su "klase" samo jedan nachin programiranja koji je vishe fensi od pisanja funkcija. Da shvatash pravu svrhu vreovatno bi sad mogao da shvatish koliko je besmisleno napraviti "login sa klasama" da bude celina sam za sebe, mislim moze to da se uradi, ali opet bi to predstavljalo samo demonstraciju i nichemu ne bi moglo da ti sluzi,tj da kazesh ovako se to radi u pravoj web aplikaciji.Ovako je svejedno kako ga pravio, ako nije deo nekog veceg koda.

Pretpostavljash da autorizacija sama mora da se provlachi kroz svaki segment koda, ona odredjuje ko shta moze, a ko ne moze, gospodar CRUD-a (create read update & delete), shto znachi da se ne svodi samo na: upishi u sesiju da je korisnik ulogovan, redirektuj ga na stranu...profit???.Ok ovo je mozda sad slab primer jer stvarno zarad demonstracije mogu se zanemariti ostale metode, ali shta je sa pristupom bazi?Pristup bazi i sanitizacija predstavalja ogromnu celinu za sebe, a opet je povezan ko crevca sa autorizacijom zbog kontrole nad CRUD-om i ti ako ne poznajesh osnove objektnog programiranja necesh imati pojma shta se tu deshava. Pokushavam da ti objasnim da prvo morash da savladash programiranje pa tek onda da pochesh neshto da pravish, zagrej stolicu, pozajmi par knjiga iz torrente biblioteke o OOP-u i coding patterns-ima. Dosta me je iznenadilo sad shto ja nisam pisao sistem za logovanje korisnika bar dve godine, ako ne i vishe, a ni otvaranje konekcije ka bazi biggrin.gif da budem iskren, ima pametnijih stvari za programiranje smile.gif
Objektni pristup je neshto shto mora da se shvati kao filozofija a ne kao primena u php-u, neko je na forumu skoro napisao hocesh da radish na nekom frameworku a ne znash php - ja bi to ispravio hocesh da radish na frameworku a ne znash da programirash.Au raspisah se ja...a treba da zavrshim neke plugine za wodpress - e to je tek krsh od koda, pa ja sam lepshe pisao kad sam tek uchio, nema extendovanja nema nichega, sve samo preko hookova, a tako me svrbi da mu ishakujem kod iako znam da ce me sjebati svaki sledeci update...slatku muku josh niko ne popi da je gorkom mukom ne zagrchi sad.gif
Go to the top of the page
 
+Quote Post
Milos Jankovic
poruka Jun 21 2009, 00:13
Poruka #18




Grupa: Članovi
Poruke: 102
Datum reg.: 13-February 06
Član broj: 3,357



ma tutorial sam izguglao smile.gif uf, problem je sto ja shvatam kako funkcionisu klase kroz primer koji je kodi napisao u prvom postu, ali da me prebijete ne mogu da shvatim kako prakticno da primenim klase u radu sa bazom. gledam kod od wordpress-a, ali ne mogu bas da povezem, ogromna je to skripta...

e sad, razmisljam da nadjem primer i ajde da vidim da li je ovo poenta: imamo neku shop skriptu i sad je nama potrebno da nadjemo sve proizvode koji su u bazi i njih je moguce izlistati na osnovu recimo kategorije, cene ili zemlje porekla i to se definise jednom klasom. e sad nama je potrebno da se ta pretraga unapredi na godinu proizvodnje i mi cemo za to da napravimo novu klasu, koja koristi prvobitnu, s tim sto cemo dodati mogucnost pretrage po godini proizvodenj. (mada primer i nije nesto jer smo mogli i godinu proizvodnje da stavimo u prvu klasu, ali me samo zanima da li tako da trazim poentu zasto oop bolje od proceduralnog?)

e sad koliko shvatam, nije potrebno praviti klase za nesto sto se moze prosto resiti sa jednom funkcijom, vec samo za one slozenije stvari? ili opet gresim?

ja sam do sada radio samo jednostavnije cms-ove, radjene proceduralno, template odvojen od php-a i to sasvim lepo funkcionise... ali kao sto kodi kaze, ovo je neko pametan smislio i rekao da je dobro, tako da moram da se pomucim smile.gif
Go to the top of the page
 
+Quote Post
zlatiborac
poruka Jun 21 2009, 00:26
Poruka #19




Grupa: Članovi
Poruke: 2,795
Datum reg.: 21-January 05
Lokacija: Zlatibor
Član broj: 92



Stain-e iliti Mali Radojice smile.gif kad si vec pomenuo hook-ove mogao si malo i taj segment pojasniti ... inache chini se da si pijaniji od mene laugh.gif u ovom trenutku smile.gif
Go to the top of the page
 
+Quote Post
r3d
poruka Jun 21 2009, 04:06
Poruka #20




Grupa: Članovi
Poruke: 230
Datum reg.: 18-June 09
Lokacija: Banja Luka
Član broj: 30,407



CITAT (Milos Jankovic @ Jun 21 2009, 01:13) *
ja sam do sada radio samo jednostavnije cms-ove, radjene proceduralno, template odvojen od php-a i to sasvim lepo funkcionise... ali kao sto kodi kaze, ovo je neko pametan smislio i rekao da je dobro, tako da moram da se pomucim smile.gif

Sad kad znas sta su klase, objekti, methodi i kako funkcionisu, kad krenes pisati nesto proceduralno orjentisano, samo ce ti se ukazati da bi to bolje i lakse bilo odraditi OOP-om! Hocu da kazem da se ne moze sve citanjem nauciti, npr. pogledaj sad kroz sav kod tvog cms-a i probaj to zamisliti u oop stilu!

Podrzavam zlatiborca, staine, reci nesto vise o hookovima!
Go to the top of the page
 
+Quote Post

4 - broj stranica V   1 2 3 > » 
Reply to this topicStart new topic

 



Lo-fi verzija Trenutno vreme: Thursday 5. December 2019 - 20:12

Sve informacije (poruke, teme i sl.) predstavljaju stavove samo njihovih autora.
Objavljivanje informacija sa sajta u nekomercijalne svrhe moguće je samo uz navođenje URL adrese diskusije.
Za sve druge vidove distribucije potrebno je imati izričitu dozvolu administratora Dizajn Zone i/ili autora poruka.
Autorska prava za sadržaj poruke zadržava njihov autor, osim ako nije drugačije naznačeno.

powered by:Plus hosting