Autorius Tema: Objektinis PHP  (Skaityta 797 kartus)

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 434
  • Karma: +11/-0
    • Žiūrėti profilį
Objektinis PHP
« Įrašytas: 2014-08-29 00:16:20 am »
Sveiki,

vis ramybės man neduoda klausimas, kada naudinga naudoti objektus per PHP? C++ kai programuoji univiere, tai tom programom be objektų nelabai ką ir padarytum. O vat PHP kai turi duombazę, tai man iš duombazės kokį ROW ištraukus gaunasi kaip objektas..


Tai va, esmė kad nesuprantu objektinio naudos PHP kalboje. Kada naudinga kurtis tas klases, objektus? Ar tai greičiau laiko atžvilgiu kada nors būna? ar tai naudinga tik dideliems projektams, ar TVS'ams? Kaip va pvz. wordpressas. Ten juk pilna klasių.

Dėkui už apšvietimą. ( P.S. per php niekada nekuriu klasių ir objektų. Kai C++ moku su jais elgtis, tai atrodo suprantu WP ar kur kitur matomus objektus ir t.t. )

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7439
  • Karma: +231/-15
    • Žiūrėti profilį
    • mano CV
Ats: Objektinis PHP
« Atsakymas #1 Įrašytas: 2014-08-30 09:43:04 am »
Objektai leidzia:

overridint'i metodus ir taip praplesti esama funkcianaluma be branduolio lietimo
extendinti
implementinti
testuoti su PHPUnit

tai leidzia islaikyti struktura, naudoti pattern'us, geriau cachinti, didinti sauguma, turet strukturizuota koda

pasileisk koki framework'a ir pamatysi. MVC pattern populiariausias. Factory labai pop, singleton irgi.

siaip cia daugiau:

http://www.fluffycat.com/PHP-Design-Patterns/
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs ganjabest

  • Dalyvis
  • **
  • Įrašai: 965
  • Karma: +41/-1
  • Povilas Stankevičius
    • Žiūrėti profilį
Ats: Objektinis PHP
« Atsakymas #2 Įrašytas: 2014-08-30 10:03:21 am »
Kada naudoti? Visada. Viskas ka tu mokaisi PHP kalboje iki objektinio programavimo yra pagrindai, nes kaip pagalvoju pati PHP ismokti, nuosekliai mokantis, gali per menesi laiko  ;D Siaip istikro tau jo nauda paaiskinti, taip, kad tu suprastum labai sunku, kaip tu pats dar tik klausi kada ji naudoti. Kaip ir sakiau, naudoti ji reikia visada: tiek del laiko taupymo, tiek del kodo supratimo tiek del kodo lankstumo, prijungimo, funkcijos keitimo nelieciant tevines funkcijos kodo(overridint'i) ir t.t. OOP turi standartus kuriu laikomasi ir tai palegvina visa kodo supratima. Pvz, kad ir rasti klaidas, konkreciu funkciju vietas ir t.t.
Tarkim turim klase "spausdinimas", taigi failas tap pat bus pavadintas su zodziu spausdinimas: spausdinimas.php ar dar geriau spausdinimas.class.php. Tu php kode matai $spausdinimas = new Spausdinimas(); ir iskviesta funkcija $spausdinimas->uzkrauti(); arba vietoje viso sito galima naudoti statines funkcijas ir iskviesti taip Spausdinimas::uzkrauti(); Ir tu zinai, kad funkcija uzkrauti bus tame faile.
Bet cia tik labai maza dalis sito gerio, nekalbant apie paciu objektu galimybes, paciu klasiu saveikavima tarpusavyje ir t.t.
Siek tiek apie objekta. Kadangi aiskinu ukiskai, tai ir cia taip pat paaiskinsiu. Turi klase pavadinta "Spinta" ir viduje susikuri kazkoki objekta "dezute". Klases viduje yra funkcijos "ideti_i_dezute()", "perziureti_dezutes_turini()". Tada tu kazkur kitam faile rasai taip(naudojamos statines funkcijos):
Spinta::ideti_i_dezute("masinele");
Po to rasai koda ir pagalvoji kad toje vietoje tau reikia dar kazka i ja ideti. Idedi:
Spinta::ideti_i_dezute("tusinukas");
Galu gale kaip visko pridedi i ta dezute tu nori paziureti ka joje sudejai.
Spinta::perziureti_dezutes_turini();
Bam ir matai visa turini. Ka as noriu pasakyti? Paprastose funkcijose kur nera naudojamas objektas, tau i kiekviena funkcija reikia perdavineti ir grazinti, ta kintamaji, kad su juo galima butu atlikti veiksmus. O kada naudoji objekta tarkim toje klaseje gali su juo atlikti veiksmus kokius tik nori ji panaudojant bet kurioje funkcijoje kiekviena karta jo neperduodant. Isivazduok turi 10 kintamuju, kuriuos nori panaudoti funkcijoje. Negi perdavinesi sitaip - atlikti_veksmus($kint1, $kint2, $kin3, .... ir taip iki $kint10). Ir taip reikia juos perleisti per 10 funkciju. Isivaizduoji kokios jos bus? O dabar tas pats su objektais(siuo atveju kint1 ir t.t. objektai) ir vuolia:
atlikti_veiksmus() {
$this->kint1;
$this->kint2;
}

Ir naudoji kiek reikia, darai ka nori. Po sitos funkcijos dar nori kazka padaryti su objektu? Opa:
dar_kazka_padaryti() {
$this->kint1;
$this->kint2;
}

Ir kada iskviesi antra funkcija objektai jau bus toki kokius padarei naudodamas ankstesne funkcija.
Nu va kazkas tokio.
Ir siaip ieskodamas web developer'io darbo vargu ar ji rasi nemokedamas OOP. Tai tiek.
« Paskutinį kartą keitė: 2014-08-30 14:54:59 pm sukūrė ganjabest »
Visi žmonės kaip žmonės - tik aš vienas kaip dievas!

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 434
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Objektinis PHP
« Atsakymas #3 Įrašytas: 2014-08-30 15:22:19 pm »
Na tarkime tinklapis - skelbimų sistema.

Kokios bazinės klasės turėtų būti, kad poto jas extendinti ir naudoti?  Pradžiai turi būti login/register , tuomet skelbimo įkėlimas vartotojui ir skelbimų vaizdavimas klientui.
Tai register koks tikslas naudoti klases? Juk per inputus surenki info ir talpini duombazėj. Nelabai su jais kažką žaisti bereiks.  Login, na čia tai būtų klasė  class User ? Joje kaupti to žmogaus info? Tai tikslas tas, kad sykį iš duombazės išsitrauki duomenis ir su jais laviruoji ką nori, o užbaigiant skriptą atnaujini duombazėj įrašus apie tą userį, ar klįstu?

Patys skelbimai tada atvaizduojami klientui. Tai klase Class Skelbimas , ir  kaip jį naudoti? Dabar aš tiesiog kur reikia tarkim tą skelbimą atvaizduoti, fetchinu informaciją paprastai su PDO ir viskas. Reikia atnaujinti ( tarkim redaguoti ), tai vėl PDO UPDATE ir pakeičiu vietoje. Kur susitaupo su klase?

Tokio konkretaus pavyzdžio pagalba gal geriau eis suprasti.. Ar bandyti imti frameworką kokį nors ir su jais tą objektinį paprasčiau eis perprasti?

Manualai.lt Forumas

Ats: Objektinis PHP
« Atsakymas #3 Įrašytas: 2014-08-30 15:22:19 pm »

Neprisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2010
  • Karma: +57/-16
    • Žiūrėti profilį
    • Apie mane
Ats: Objektinis PHP
« Atsakymas #4 Įrašytas: 2014-08-30 15:39:29 pm »
Mano patarimas - imk codeigniter ir greit perprasi kas ir kaip veikia su objektais ( taip, codeigniter, nes jį greit perpranta pradinukai ) :)

Kitas dalykas, tai obejktinis programavimas yra neatsiejama programavimo dalis. Nesvarbu ar tu gamini paprastą login sistemą ar sudėtingą projektą - gera struktūra padės išvengti visų galimų problemų :)

Neprisijungęs ganjabest

  • Dalyvis
  • **
  • Įrašai: 965
  • Karma: +41/-1
  • Povilas Stankevičius
    • Žiūrėti profilį
Ats: Objektinis PHP
« Atsakymas #5 Įrašytas: 2014-08-30 23:55:33 pm »
Na tarkime tinklapis - skelbimų sistema.

Kokios bazinės klasės turėtų būti, kad poto jas extendinti ir naudoti?  Pradžiai turi būti login/register , tuomet skelbimo įkėlimas vartotojui ir skelbimų vaizdavimas klientui.
Tai register koks tikslas naudoti klases? Juk per inputus surenki info ir talpini duombazėj. Nelabai su jais kažką žaisti bereiks.  Login, na čia tai būtų klasė  class User ? Joje kaupti to žmogaus info? Tai tikslas tas, kad sykį iš duombazės išsitrauki duomenis ir su jais laviruoji ką nori, o užbaigiant skriptą atnaujini duombazėj įrašus apie tą userį, ar klįstu?

Patys skelbimai tada atvaizduojami klientui. Tai klase Class Skelbimas , ir  kaip jį naudoti? Dabar aš tiesiog kur reikia tarkim tą skelbimą atvaizduoti, fetchinu informaciją paprastai su PDO ir viskas. Reikia atnaujinti ( tarkim redaguoti ), tai vėl PDO UPDATE ir pakeičiu vietoje. Kur susitaupo su klase?

Tokio konkretaus pavyzdžio pagalba gal geriau eis suprasti.. Ar bandyti imti frameworką kokį nors ir su jais tą objektinį paprasčiau eis perprasti?

Registracija ir prisijungimas dazniausia buna sudeta i Auth(authentication) klase. Kaip tai koks tikslas naudoti? O inputu filtravimas, egzistuojanciu duomenu tikrinimas ir t.t. Juk ne viena funckija naudojama. Patikek manim nemazai visko gaunasi, kaip viska nuosekliai padarai.
Siaip kokias naudoti, tai priklauso nuo to ko tu nori. Jeigu naudotum CodeIgniter kaip Modestas sake, tai pamatytum, kad darant ta skelbimu puslapi panaudotum ir 10 ir daugiau klasiu. Tu niekad nelygink paprastu funkciju su OOP, nes ne tame esme, kad naudojant OOP funkcijos kazka rimciau atlieka. Bet jeigu as visa tai padaryciau naudojant OOP tu ne, tai i tavo koda niekas net neziuretu arba imtu didelius pinigus uz jo redagavima. Be to as viska padaryciau "simta" kartu greiciau, nei tu. Patikek kaip failu buna keliasdesimt ir kodo eiluciu kiekviname faile po pora tukstanciu ar daugiau, tai atvirai pasakius tu uzsiknistum ieskoti, reikiamos vietos tam savo kode. Jo, ir man kazkada taip atrode ale koks tikslas. Patarciau, tau tokiu klausimu neuzdavinet ir pabandyti paciam, negaistant laiko isradinejant dviracius savaip, kaip kazkada as ir manau daugelis kitu ;) Pasimk framework'a, pasidomek kas yra controllers, models, views, helpers, libraries. Ir kaip suprasi, kas kur dedama pamatysi kaip viskas gali buti lengva naudojant OOP.
Visi žmonės kaip žmonės - tik aš vienas kaip dievas!

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7439
  • Karma: +231/-15
    • Žiūrėti profilį
    • mano CV
Ats: Objektinis PHP
« Atsakymas #6 Įrašytas: 2014-08-31 08:54:28 am »
as irbi patariu tau pasiimti koki framework'a

as siulyciau kanors is situ:

Phalcon
Symofny
Zend

su Phalcon'u gal siek tiek sudetingiau, bet kartu ir paprasciau. Sudetingiau tame, kad jis isiraso kaip apache'o ar nginx'o modulis, paprasciau tame, kad nereikia turet ~5000-7000 failu, kurie sudaro framework'a. Sudetingiau dar tuo, kad reikia isideti failus autocomplete kad darytu tavo IDE (redaktorius, kuris palaiko projektus ir praskanuoja tavo visus failus esancius projekte ir gali gauti tada autocomplete funkciju, taip pat paspaudus ant funkcijos pavadinimo su ctrl (dazniausias shortcutas) ir pele persokti tiesiai i ta funkcija. zodz patogu, siulau phpstorm arba netbeans, jei nenaudoji nei 1 is situ.) phalcon'as yra greitesnis frameworkas uz bet kuri kita php framework'a, nes jis uzkraunamas i kompo atminti servo paleidimo metu, visi kiti yra "compail'iniami" puslapio krovimo metu. kas kart is naujo, todel uztrunka ~200-300 ms maziau + rija daug maziau RAM, CPU.

Symfony yra vienas populiariausiu tarp Lietuvos imoniu, jei ieskosi darbo ir turesi patirties su symfony, bus pliusas. jo esme tokia, kad parsisiunti, isimeti failus i projekta ir poto jau viska darai kaip raso ju dokumentacijoj http://symfony.com/doc/current/index.html

Zend - labai pop framework'as, nes prie jo prisideda dideles IT imones kaip Amazon, Microsoft, IBM, Oracle ir kt. beto tai yra vienas seniausiu framework'u. Is esmes panasiai veikia kaip symfony - parsisiunti kruva failu, juos imeti i projekta ir naudojies.

visi siti 3 yra vadinamieji full-stack framework, tai reiskia, kad jame rasi praktiskai viska, ko gali tau prireikti:

sesiju valdymo klases - autorizacija, prijungimas, registravimas
routerius - koks "friendly url" koki controller ir koki jo action'a krauna
security visokiu dalykeliu - input filtru, validacijos ir t.t.
formu abstrakcijos lygis - objektine forma, kuri galiausiai per template'a yra isspausdinama html pavidale, ja submitinant, ji automatiskai validuoja duomenis, ismeta klaidas kai iveda belekea vietoj email ir t.t
duomenu bazes abstrakcija - objektinis duombazes valdymas, kai 1 objektas = 1 lentele ir ta objekta paimi, tada jam priskiri reiksmes, kokiu nori lenteleje tureti, tada tiesiog $obj->save() ir viskas, yra sukonstruojama saugi sql uzklausa, ji ivykdoma, jei yra klaidu, apie jas yra informacija tame paciame objekte. Tokia sistema vadinas ORM, buna atskiru framework'u tik ORM funkcijai (kaip ir bet kuriai anskciau minetai funkcijai, bet tai nebuna full-stack framework, pvz Doctrine, http://www.doctrine-project.org/). siulau pagooglint kas yra "Active record pattern"
templeitu variklis - vieta, kur yra html'as ir templeito variklio sintakses if'ams ar pns. Prie templeito buna prisegamas objektas, kuris daznai yra vadinamas "view" ir jame buna duomenys reikalingi atvaizduoti templeita.

ir daug kitu dalyku :)


siaip siulau pradeti ne nuo pacio framework'o, bet nuo supratimo apie tai, kas yra sie dalykai:

MVC pattern
Active record pattern
kai jau bus aisku kas tie 2, siulau perskaityti sita: http://docs.phalconphp.com/en/latest/reference/routing.html cia phalcon'o doc'sai, bet esme ta pati visuose frameworkuose. Gali skaityti apie ta pati ir symfony: http://symfony.com/doc/current/book/routing.html ar zend:  http://framework.zend.com/manual/2.0/en/modules/zend.mvc.routing.html ar codeigniter: https://ellislab.com/codeigniter/user-guide/general/routing.html

perskaites visu framework'u routinimo dokumentacijas galesi issirinkti kuris tau aiskiausias, nes jie siek tiek skirsis, tada jau zinosi kuri framework'a tau rinktis ;)

nelabai yra skirtumas ar ziuresi filmukus php ar ruby ar dar ko, nelabai skirtumas kokio framework'o, nes tai yra pattern'ai, kurie yra standartiniai, isbandyti laiko ir placiai naudojami. labai labai daugelyje frameworku. Bet tai yra esminiai dalykai, be kuriu bus labai sunku su bet kuriuo frameworku. Kai suprasi esme, tada bet kuris framework'as per pora dienu jau bus aiskus :)


Kaip minejau, jei nenaudoji ne 1 is situ, siulau pradeti:

https://netbeans.org/downloads/ (pasirinkt ta kur su HTML ir PHP)

arba sita:

http://www.jetbrains.com/phpstorm/download/ (30 days trail, bet jei nori, gali susirasti nemokamai serial key pvz cia: https://gist.github.com/monkeymonk/7303942 )

daugelis, kas bande abu, rekomenduoja php storm. Siuo atveju as vienas is tu daugelio. Seniau naudojau netbeans kelis metus, dabar jau metus+ php storm'a ir tikrai nezadu grizti prie netbeans.


kaip pastebesi visa sita dalyka praejes, kad sudetingiausia pradzioje - viska susikonfiguruoti, suprasti esminius dalykus. Kuo daugiau visko moki, tuo greiciau ir lengviau galesi koda parasyti ;) todel labai siulau paskaityti, paziureti video apie dalykus, kuriuos minejau.



Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2010
  • Karma: +57/-16
    • Žiūrėti profilį
    • Apie mane
Ats: Objektinis PHP
« Atsakymas #7 Įrašytas: 2014-08-31 10:50:13 am »
Citata
as irbi patariu tau pasiimti koki framework'a

as siulyciau kanors is situ:

Phalcon
Symofny
Zend

Čia Lukai - nesutiksiu :)
Phalcon pradedančiąjam bus kiek sunkus susigaudyti, nes jeigu nesi susidūręs - reikia kažkokių krypčių, kurių phalcon neturi per daugiausiai :) Symfony galbūt ir būtų gerai, bet jis yra gremėzdiškas ir netiks pirmajai pažinčiai su MVC :)

Zend juo labiau - neturi padorios dokumentacijos... Ten dažnai išvis kosmosas... Tad geriau jau jeigu kažką rimčiau, tai Laravel imti - dokumentacija aiški, pamokų pilna, o pagalbos forumas - visada padės :)

Neprisijungęs ganjabest

  • Dalyvis
  • **
  • Įrašai: 965
  • Karma: +41/-1
  • Povilas Stankevičius
    • Žiūrėti profilį
Ats: Objektinis PHP
« Atsakymas #8 Įrašytas: 2014-08-31 12:25:08 pm »
Pritariu Modestui. Jeigu jau ne CI, tai bent Laravel, nes zmogui, kuris klausineja kam tas OOP imti is karto ZEND, tai savizuzdybe :D Jau as, kad ir CI, Laravel kaip semkas lukstendamas pasibandziau ant ZEND ir man ten galva greitai pradejo skaudeti, juolab, kad dokumentacijos beveik nera. Vien kazkokia forma sugeneruoti, ten "milijonas" budu. Turet, tai turi kaip sakai viska, bet pvz bent siuo metu ir ateityje tikrai juo nezadu naudotis ar siaip pasigilinti. Man jis tiesiog per daug prikistas. Ir siaip populiareja daug lengvesni frameworkai su aiskiomis dokumentacijomis, kurie su laiku irgi tures manau labai daug visko savyje. Tiek tas pats minetas Laravel(nors truputi "svorio" kategorija ne ta) pripazintas ale populiariausiu praejusiais metais. Jauciu ir ko gero taip ir bus, kad ZEND tuoj taps atgyvena, nors ir dabar jau grynas rachitas. Jau dabar tiesiog is ne vieno pazystamo tenka girdeti, kad ju imones, kuriose dirba, pereina ant kitu frameworku, tiesiog del to, kad neranda ZEND specialistu. Bent jau del dokumentacijos kurejai butu pasistenge, tai siai dienai butu dar kitoks vaizdas. Bet dabar siulau negaisti laiko, nebent pats nori ar tai tau siulo didziulius pinigus. O siaip darbo pilna ir be ZEND mokejimo.
« Paskutinį kartą keitė: 2014-08-31 12:51:25 pm sukūrė ganjabest »
Visi žmonės kaip žmonės - tik aš vienas kaip dievas!

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 434
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Objektinis PHP
« Atsakymas #9 Įrašytas: 2014-08-31 22:17:37 pm »
Ne iš vieno žmogaus gaunu rekomendacijas bandytis su laravel, tai manau bandysiu su ja ką nors konstruoti. Pakol kas dėkui, info pateikėt per akis. Dabar reiks susirasti laisvesnio laiko ir nagrinėti visą tai. Ačiū

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7439
  • Karma: +231/-15
    • Žiūrėti profilį
    • mano CV
Ats: Objektinis PHP
« Atsakymas #10 Įrašytas: 2014-09-02 09:24:41 am »
Citata
as irbi patariu tau pasiimti koki framework'a

as siulyciau kanors is situ:

Phalcon
Symofny
Zend


Čia Lukai - nesutiksiu :)
Phalcon pradedančiąjam bus kiek sunkus susigaudyti, nes jeigu nesi susidūręs - reikia kažkokių krypčių, kurių phalcon neturi per daugiausiai :) Symfony galbūt ir būtų gerai, bet jis yra gremėzdiškas ir netiks pirmajai pažinčiai su MVC :)

Zend juo labiau - neturi padorios dokumentacijos... Ten dažnai išvis kosmosas... Tad geriau jau jeigu kažką rimčiau, tai Laravel imti - dokumentacija aiški, pamokų pilna, o pagalbos forumas - visada padės :)


Nu mano pirmas framework'as buvo Joomla Framework 1.x, poto neprisimenu kuris pirmas Symfony ar Zend ir nuo 2013 lapkricio Phalcon'as. Man rodos, kad galima suprasti is karto ir Symofny ir Zend ir Phalcon'a. Phalcon'as mokymuisi yra gerai tuo, kad negalesi listi prie failu, kurie sudaro pati framework'a ir tada galesi labiau suprasti, kad  framework'o nereikia redaguoti, jei nori kazkuo ji papildyti - reikia overridinti ir extend'inti. Taip, sudetingiau ji instlalint ir paleisti, bent jau is pirmo zvilgsnio, bet bent jau man su symfony buvo pradzia sudetingesne :)

todel ir sakau is pradziu paskaityti bendrai apie

Citata
MVC pattern
Active record pattern
kai jau bus aisku kas tie 2, siulau perskaityti sita: http://docs.phalconphp.com/en/latest/reference/routing.html cia phalcon'o doc'sai, bet esme ta pati visuose frameworkuose. Gali skaityti apie ta pati ir symfony: http://symfony.com/doc/current/book/routing.html ar zend:  http://framework.zend.com/manual/2.0/en/modules/zend.mvc.routing.html ar codeigniter: https://ellislab.com/codeigniter/user-guide/general/routing.html

perskaites visu framework'u routinimo dokumentacijas galesi issirinkti kuris tau aiskiausias, nes jie siek tiek skirsis, tada jau zinosi kuri framework'a tau rinktis ;)


tada tik imti is esmes kodinti su kokiu nors frameworku, nes is kodo suprast tikrai reikia tureti bendras zinias.

As bent jau nemegstu gaisti laiko su mokantis dalykus, kuriu man is esmes nereikes, todel rekomenduoju pradeti nuo geriausiu arba placiausiai naudojamu. Phalcon'as daugelis sutinka kad yra geriausias del to, kad jis extensionas, Lietuvoje daugelis imoniu klausia ar turi patirties su Symfony. Aisku kalbu tik apie tokius darbo pasiulymus, kur alga i rankas bent 3.5-4.5 litu. Jei taikai i 2.5 tai tiks betkas, vistiek hakinsi koki TVS'a.


Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2010
  • Karma: +57/-16
    • Žiūrėti profilį
    • Apie mane
Ats: Objektinis PHP
« Atsakymas #11 Įrašytas: 2014-09-02 12:00:28 pm »
Nu mano pirmas framework'as buvo Joomla Framework 1.x, poto neprisimenu kuris pirmas Symfony ar Zend ir nuo 2013 lapkricio Phalcon'as. Man rodos, kad galima suprasti is karto ir Symofny ir Zend ir Phalcon'a. Phalcon'as mokymuisi yra gerai tuo, kad negalesi listi prie failu, kurie sudaro pati framework'a ir tada galesi labiau suprasti, kad  framework'o nereikia redaguoti, jei nori kazkuo ji papildyti - reikia overridinti ir extend'inti. Taip, sudetingiau ji instlalint ir paleisti, bent jau is pirmo zvilgsnio, bet bent jau man su symfony buvo pradzia sudetingesne :)

todel ir sakau is pradziu paskaityti bendrai apie
Lukai, žinok buvo, kas buvo :) Mano pirmasis taip pat buvo Joomla, bet... Gailiuosi, kad mokiausi jį :)

Bet kokiu atveju Zend yra su bloga dokumentacija - pradinukams netinka, o symfony yra kiek per sudėtingas kąsnis pirmam žingsniui :)


tada tik imti is esmes kodinti su kokiu nors frameworku, nes is kodo suprast tikrai reikia tureti bendras zinias.

As bent jau nemegstu gaisti laiko su mokantis dalykus, kuriu man is esmes nereikes, todel rekomenduoju pradeti nuo geriausiu arba placiausiai naudojamu. Phalcon'as daugelis sutinka kad yra geriausias del to, kad jis extensionas, Lietuvoje daugelis imoniu klausia ar turi patirties su Symfony. Aisku kalbu tik apie tokius darbo pasiulymus, kur alga i rankas bent 3.5-4.5 litu. Jei taikai i 2.5 tai tiks betkas, vistiek hakinsi koki TVS'a.

Na čia nepyk, bet nereikia meluoti :) Juo labiau, paimk tą patį Laravel, kurį nėra sunku išmokti ir po poros mėnesių praktikos tu mokėsi elgtis ir su Symfony :) Tiesa, pats kai klausinėjausi dėl darbo ( alga 5-9k litų ) - klausė pagrinde trijų dalykų:
1. Laravel arba Symfony
2. PhpUnit mokėjimas
3. Patirtis dirbant su Git ir teamwork

Visą kitą jiems buvo pliusai arba minusai ;)


ps. Laravel yra apkarpyta ir patobulinta symfony versija ;)

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7439
  • Karma: +231/-15
    • Žiūrėti profilį
    • mano CV
Ats: Objektinis PHP
« Atsakymas #12 Įrašytas: 2014-09-03 14:36:50 pm »
na as kai su laraveliu nieko neveikiau, tai siuo atveju nzn :) siaip ar anaip ismokus bet kuri is siu framework'u, kita ismokti galima gana lengvai, trecia isvis tik kas 10 dokumentacijos skaini galima skaityti, nes ir taip aisku is kodo ;)
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2010
  • Karma: +57/-16
    • Žiūrėti profilį
    • Apie mane
Ats: Objektinis PHP
« Atsakymas #13 Įrašytas: 2014-09-03 14:46:03 pm »
na as kai su laraveliu nieko neveikiau, tai siuo atveju nzn :) siaip ar anaip ismokus bet kuri is siu framework'u, kita ismokti galima gana lengvai, trecia isvis tik kas 10 dokumentacijos skaini galima skaityti, nes ir taip aisku is kodo ;)
Klysti.. labai klysti... Laravel iš kodo nieko nesuprasi :) Na kaip, suprasi tik tai, kas prirašyta, o daugiau kaip ir ką naudoti - nelabai. Pamokų ir dokumentacijos yra begalės, netgi yra pilną tips, kaip padaryti vieną ar kitą sistemą naudojant Laravel turimus priedus :)

O išmokus vieną, pramokti kitą bus 99% lengviau, nei mokantis iš karto :) Tą galiu puikiai pasakyti, kai pramokau Laravel ir pasiėmiau Symfony, kurio prieš tai neįkandau, o dabar... Jokios problemos parašyti kokią nors sistemą ( taip, visų gudrybių nežinau, bet... nelabai ir reikia dabar )

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7439
  • Karma: +231/-15
    • Žiūrėti profilį
    • mano CV
Ats: Objektinis PHP
« Atsakymas #14 Įrašytas: 2014-09-05 15:38:03 pm »
is kodo nesuprasi ar suprasi priklauso nuo to kiek pries tai kodo esi mates :) Karta maciau, kaip kvantines mechanikos knyga zmogus skaite tik ziuredamas i formules tekste ir poto sugebejo viska paaiskinti apie ka buvo parasyta neperskaicius praktiskai nei vieno zodzio. gal ir gerai pradeti nuo paprastesniu, kiekvienam savo. man patinka imti sudetingiausia ir ji priverst veikt :)
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs justinas

  • Naujokas
  • *
  • Įrašai: 164
  • Karma: +16/-3
    • Žiūrėti profilį
Ats: Objektinis PHP
« Atsakymas #15 Įrašytas: 2014-09-09 12:18:08 pm »
Na tarkime tinklapis - skelbimų sistema.

Kokios bazinės klasės turėtų būti, kad poto jas extendinti ir naudoti?  Pradžiai turi būti login/register , tuomet skelbimo įkėlimas vartotojui ir skelbimų vaizdavimas klientui.
Tai register koks tikslas naudoti klases? Juk per inputus surenki info ir talpini duombazėj. Nelabai su jais kažką žaisti bereiks.  Login, na čia tai būtų klasė  class User ? Joje kaupti to žmogaus info? Tai tikslas tas, kad sykį iš duombazės išsitrauki duomenis ir su jais laviruoji ką nori, o užbaigiant skriptą atnaujini duombazėj įrašus apie tą userį, ar klįstu?

Patys skelbimai tada atvaizduojami klientui. Tai klase Class Skelbimas , ir  kaip jį naudoti? Dabar aš tiesiog kur reikia tarkim tą skelbimą atvaizduoti, fetchinu informaciją paprastai su PDO ir viskas. Reikia atnaujinti ( tarkim redaguoti ), tai vėl PDO UPDATE ir pakeičiu vietoje. Kur susitaupo su klase?

Tokio konkretaus pavyzdžio pagalba gal geriau eis suprasti.. Ar bandyti imti frameworką kokį nors ir su jais tą objektinį paprasčiau eis perprasti?

Aš OOP patį patį pagrindą mėgstu aiškinti paprastai: tai yra duomenys IR veiksmai su jais apjungti kartu.

T.y. jei be OOP tu turėtum funkciją ir į ją duotum kažkokį žodyną su skelbimo atributais...

const KAINA_PER_DIENA = 3.45; // 1 euras
function kiekKainuos($skelbimas) {
    // formulė iš oro: imam už dieną ir už pavadinimo ilgį.
    return $skelbimas["dienos"] * KAINA_PER_DIENA + mb_strlen($skelbimas["pavadinimas");
}

echo kiekKainuos(array("dienos" => 3, "pavadinimas" => "Motorola 123 (naudotas)"));

Kokios bėdos matosi iš kodo? Pirmiausiai, duomenys neturi jokios formalizuotos struktūros, neaišku, iš ko tas skelbimas susideda. Antra, jie mėtosi atskirai nuo veiksmų, kuriuos galima daryti su jais. O jei dar reiktų funkcijos, pvz., pratestiGaliojima(), viskas pasidarytų dar negražiau. Aišku, gali atrodyti „tai kas, aš tą veiksmą parašysiu rankom“, bet vėl, DRY, kai prireiks dešimtyje vietų... :)

Tą imam ir gražiai sudedam į klasę.

class Skelbimas {
    const KAINA_UZ_DIENA = 3.45;
    private $pavadinimas;
    private $dienos;

    public function kiekKainuos() {
        return $this->dienos * $this->KAINA_UZ_DIENA + mb_strlen($this->pavadinimas);
    }
}

$skelbimas = new Skelbimas(...);
echo $skelbimas->kiekKainuos();

Viskas gražiai suporuota. (kode galėjau pridaryti klaidų – PHP ne(be)programuoju)

Apskritai, OOP dažniausiai dar atsineša ir interfeisus. Tas nebūtina dinaminėje kalboje, bet labai naudinga. Pvz., gali kurti Kainuotojas interfeisą, kuris turėtų kiekKainuos() funkciją. Tada kita funkcija galėtų tikėtis ne Skelbimo, o bet kokio tipo, kuris implementuoja Kainuotoją: Skelbimas, Narystė, ir pan. Ir jai būtų visiškai nesvarbu, kas po gaubtu – svarbu, kad bet koks kainuotojas gali grąžinti savo kainą.

Kalbant apie bendravimą su DB, ten vėl nauji klasių privalumai. Pvz., ORM tau gražiai užpildys tau klasės atributus, ištraukęs objektą iš DB, o kai kviesi skelbimas->save(), vėl juos surašys į DB be jokio vargo.

Nelabai esu susidūręs su PHP ir jo ORM'ais, tai pateiksiu šito patogumo pavyzdį su Python ir Django ORM:
sk = Skelbimas(pavadinimas="Motorola 123", kaina=200)
sk.save()
kat = Kategorijos.objects.get(pavadinimas="Mobilieji telefonai")
sk.kategorijos.add(kat)

Manualai.lt Forumas

Ats: Objektinis PHP
« Atsakymas #15 Įrašytas: 2014-09-09 12:18:08 pm »