OOP u PHP - prednosti i mane

1

OOP u PHP - prednosti i mane

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Napisano: 11 Avg 2013 15:28

Ovako, prešao sam onaj školski deo da tako kažem PHP-a (sve osnove koje se uče na početku - ispis, varijable, nizove i sortiranja, petlje, prenos podataka, forme, kolačiće, datum, aploud fajlova i dotakao pomalo SQL napravivši par jednostavnih tablica). Tokom svog tog učenja koristio sam proceduralno programiranje , dakle izvršavanje koda redosledom i postalo mi je užasno monotono da tako radim i dalje. OOP koncept mi je već poznat iz C++-a , pa me zanima koje su prednosti objektno-orijentisanog programiranja u PHP , koliko je bitno i da li olakšava ili otežava rad pri nekim većim projektima? Pre neki dan sam pregledao neku skritpu za WAP forum (u pitanju je neki jednostavan projekat od oko 2MB) i primetio sam da je sve u proceduralnom stilu, kontam da bi to uz OOP organizovanije bilo, pa sam pitao da čujem mišljenje vas iskusnijih u ovom jeziku?

Dopuna: 11 Avg 2013 22:03

Dakle? Smile



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Dakle ako mislis da si dovoljno savladao skolski deo onda ces mi procitati red po red i dati mi objasnjenje sta tacno radi ovaj kod . Ako nebudes znao onda si prijatelju daleko od oop kad nemozes najobicniji standardni kod da procitas.
<?php       foreach(array_keys($this->quantity_array) AS $key){         if($this->quantity_array[$key] > 0){           $combinations = explode('-', $key);           $eval_string = '$eval_array';           foreach(array_keys($combinations) AS $key2){             $option_key_value = explode('_', $combinations[$key2]);             $eval_string .= '['.$option_key_value[0].']['.$option_key_value[1].']';           }           $eval_string .= ' = '.$this->quantity_array[$key].';';           eval($eval_string);         }       } ?>

Elem: Ako budes znao, onda cu te nauciti OOP i kad mi bude bilo najveci smor ucicu te tako da ces jedog dana znati OOP bolje nego ja. Eo ja ti obecavam



offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

E.L.I.T.E. ::kontam da bi to uz OOP organizovanije bilo

Svaki veći projekat bez OOP bi bio pain-in-the-ass.
Linearno programiranje mi sada izlazi na nos u nekim projektima koje sam započeo kad sam bio mlad i kad sam mislio da OOP nije potrebno u PHP-u.
Toliko.

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

@_iKaC - hvala na odgovoru, izgleda da ipak moram da ostanem još neko vreme na proceduralnom programiranju Smile Pored svog tog posla kog imaš da učiš i mene, to ne dolazi u obzir , ovu bitku moram sam da preguram.

@Peco, hvala na odgovoru slažem se u potpunosti Ziveli

offline
  • m4rk0  Male
  • Administrator
  • Administrator tech foruma
  • Marko Vasić
  • Gladijator - Maximus Decimus Meridius
  • Pridružio: 14 Jan 2005
  • Poruke: 15766
  • Gde živiš: Majur (Colosseum)

Napisano: 07 Nov 2013 12:24

Kod mysqli kada zelimo code da pisemo u OOP obliku, moze li umesto ovog code-a

$mysqli = new mysqli("localhost", "korisnicko_ime", "sifra"); $mysqli->select_db("baza");

da jednostavno stoji ovaj code:

$mysqli = new mysqli("localhost", "korisnicko_ime", "sifra", "baza");

?

Dopuna: 07 Nov 2013 12:29

Ako je odgovor potvrdan, znaci li to da ako je naveden cetvrti parametar u okviru new mysqli, selektovanje baze funkcijom select_db() koristicemo samo u slucaju da je potrebno da promenimo defaultnu bazu ?

offline
  • Pridružio: 17 Jun 2012
  • Poruke: 727

Imas ovdje neka od objasnjenja mozda ti pomognu:

http://www.bug.hr/forum/topic/razvoj-web-stranica/.....34189.aspx

http://www.dizajnzona.com/forums/index.php?showtopic=62562

http://www.elitesecurity.org/t307865-0

http://www.forum.hr/showthread.php?t=41708

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

Vidi, OOP je stvar od koje sam bežao kao od crnog Đavola jer mi je izgledalo komplikovano. Ponekad jeste ako ne umeš sam napisati ili nisi dovoljno uvežban u PHP-u ali ako jesi onda nije problem ni sa malo više muke razumeti pisca.

OOP ti pruža maksimalan komfor u radu i imaš mogućnost "zaštititi" neke delove koda od nekog "slučajnog" ili namernog poziva. Imaš mogućnost napraviti zbir korisnih funkcija, zamenjivati funkcije ili im predavati vrednosti. Možeš napraviti generatore koji pola posla obavljaju umesto tebe. Ja recimo imam jedan svoj plugin u kojem sam u jednu klasu mapirao najčešće korišćene HTML tagove i pozivam ih samo sa, na primer $html->img('img/slika.jpg'). pored toga imam još par opcija za podešavanje slika ako trebam ubaciti.

Ono što sam primetio da ako napišeš kvalitetan konstruktor u klasi i dobro je definišeš onda ti tvoj CMS radi sistemom lenjosti. Klase se jednom samo definišu u ram memoriji servera i čekaju izvršenje ali samo ako se pozovu. Znači nema cimanja servera da svaki put učitava parče koda i sve. On učitava samo ako ima promena ili samo ako ti negde zahtevaš. Zato je to dobro kada radiš sa bazama podataka, možeš mapirati svoju bazu, možeš da kompletnu kontrolu nad bazom uradiš u OOP kako ja recimo radim jer sam sebi napravio klasu koja to može.

Isprobaj pa se javi Smile

offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Neznas dok neprobas! Procitaj moj potpis i to ti je OOP. Ceo covek i ceo svet je OOP. Sve oko tebe je OOP samo treba naucti kako gledati na to.

offline
  • m4rk0  Male
  • Administrator
  • Administrator tech foruma
  • Marko Vasić
  • Gladijator - Maximus Decimus Meridius
  • Pridružio: 14 Jan 2005
  • Poruke: 15766
  • Gde živiš: Majur (Colosseum)

Prikazacu samo deo koda koji je vezan za oop

@ $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books');   if (mysqli_connect_errno()) {      echo 'Error: Could not connect to database.  Please try again later.';      exit;   }   $query = "select * from books where ".$searchtype." like '%".$searchterm."%'";   $result = $db->query($query);   $num_results = $result->num_rows;   echo "<p>Number of books found: ".$num_results."</p>";


Ovaj deo mi je jasan:

$result = $db->query($query);

Ali mi nije jasan

$num_results = $result->num_rows;

Da li je to zbog toga sto je $result postao objekat onog trenutka kada je u njega kao vrednost smesten query tj $result = $db->query($query); ?

offline
  • PHP Developer
  • Pridružio: 02 Okt 2005
  • Poruke: 546

upravo tako
http://us1.php.net/manual/en/mysqli.query.php
mysqli::query
mysqli_query
Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
evo detaljnog opisa objekta
 mysqli_result implements Traversable { /* Properties */ int $current_field ; int $field_count; array $lengths; int $num_rows; /* Methods */ bool data_seek ( int $offset ) mixed fetch_all ([ int $resulttype = MYSQLI_NUM ] ) mixed fetch_array ([ int $resulttype = MYSQLI_BOTH ] ) array fetch_assoc ( void ) object fetch_field_direct ( int $fieldnr ) object fetch_field ( void ) array fetch_fields ( void ) object fetch_object ([ string $class_name [, array $params ]] ) mixed fetch_row ( void ) bool field_seek ( int $fieldnr ) void free ( void ) }
http://us1.php.net/manual/en/class.mysqli-result.php

Ko je trenutno na forumu
 

Ukupno su 1136 korisnika na forumu :: 30 registrovanih, 6 sakrivenih i 1100 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, anta, bestguarder, bokisha253, djuradj, Dukelander, Faki-Valjevo, Krusarac, Logic005, MILO-VAN, milutin134, MiroslavD, mkukoleca, nenad81, nextyamb, nikoladim, Panter, proka89, RED4G-304, RiV, royst33, ruso, sabros, Sirius, ss10, uruk, User98, vathra, wolf431, Wrangler