Poslao: 11 Avg 2013 22:03
|
offline
- E.L.I.T.E.
- Legendarni građanin
- 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?
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 12 Avg 2013 00:38
|
offline
- 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
|
|
|
|
Poslao: 12 Avg 2013 02:52
|
offline
- Peca
- 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.
|
|
|
|
|
Poslao: 07 Nov 2013 12:29
|
offline
- m4rk0
- 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 ?
|
|
|
|
|
Poslao: 07 Nov 2013 18:38
|
offline
- FoxVanis
- Ugledni građanin
- 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
|
|
|
|
Poslao: 08 Nov 2013 12:21
|
offline
- 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.
|
|
|
|
Poslao: 26 Nov 2013 19:08
|
offline
- m4rk0
- 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); ?
|
|
|
|
Poslao: 26 Nov 2013 19:39
|
offline
- |_MeD_|
- Zaslužni građanin
- 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
|
|
|
|