Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Naučiš sve i na kraju ne znaš kako da kreneš

[es] :: PHP :: Naučiš sve i na kraju ne znaš kako da kreneš

Strane: 1 2 3

[ Pregleda: 12072 | Odgovora: 43 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

SpLaSh89

Član broj: 66406
Poruke: 150
*.dynamic.isp.telekom.rs.



Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 13:37 - pre 170 meseci
Moja preporuka ti je da pocne prvo sa izmenama postojecih skripti. Neka prilagodajva vec izragdjene svojim potrebama. Tako ces kroz tudje kodove ukapirati i kako da napise svoje :)
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.dynamic.sbb.rs.



+13 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 13:56 - pre 170 meseci
@mitke013 - Bez uvrede, ali cini mi se da ti bas ne shvatas ideju OOP-a ?

Inace, ideje da covek odmah pocne da proucava Smarty/Frameworke, apsolutno ne piju vodu (bar po pom misljenju). On treba da shvati osnovne principe, da nauci i razume kako sve to radi "ispod haube", etc. Takodje, kao sto rece @vatri - bitno je da nauci da razmislja.

Enivej, reci ti tom tvom ortaku da jednostavno sedne i da krene da pravi nesto - sta god to bilo .... Nek krene da pravi Blog svoj jednostavno :-)

Kako da pocne ?

Code (php):


<?php
  // ....

 


Lepo je sto je on procitao dve tone knjiga, al, praksa je nesto drugo ;)

Pozdrav !
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
195.252.79.*



+34 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 14:12 - pre 170 meseci
Citat:
Man-Wolf: @mitke013 - Bez uvrede, ali cini mi se da ti bas ne shvatas ideju OOP-a ?


Nema ljutnje, covek se uci dok je ziv. Kako ti zamisljas OOP? Moje vidjenje sam opisao ovde, pogledaj pa mi reci gde gresim.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-a-5.sezampro.rs.



+395 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 14:46 - pre 170 meseci
Ne gresis . Samo sto je OOP malo vise od predstavljanja realnog sveta pomocu klasa i objekata ,
a to je kakve veze treba da postoje izmedju objekata , i kako ih grupises i sastavljas radi lakseg odrzavanja ,
bolje citljivosti koda i sto lakseg prosirivanja .
http://en.wikipedia.org/wiki/Design_Patterns



Viva lollapalooza
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
195.252.79.*



+34 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 15:07 - pre 170 meseci
Citat:
deerbeer: Ne gresis . Samo sto je OOP malo vise od predstavljanja realnog sveta pomocu klasa i objekata ,
a to je kakve veze treba da postoje izmedju objekata , i kako ih grupises i sastavljas radi lakseg odrzavanja ,
bolje citljivosti koda i sto lakseg prosirivanja .
http://en.wikipedia.org/wiki/Design_Patterns


Kako drugacije pocetniku koja ne zna nista o OOP-u predstaviti logiku rada, ako je ne uporedis sa realnim svetom? Znam kakvih sam ja problema imao; MVC, design pattern itd... nisu nikakav problem kad naucis OOP. Jos lakse; uskoci u neki framework i vozi Misko.

Najveci broj OOP tutorial-a je imao nesto poput klasa Animal, pa klase Dog i Cat nasledjuju Animal. Doooobro, i sta sa tim? 20 redova teksta zaista mi nije bilo dovoljno da ukapiram prednosti OOP-a.

U onom mom uputstvu sam i naveo primere zasto ne treba slati parametre metodama; ja to nigde nisam nasao, morao sam sam da zakljucim.
 
Odgovor na temu

ksrele
Programer - informatičar
Gold Drink D.O.O. Subotica
Subotica

Član broj: 14253
Poruke: 1642
*.dynamic.isp.telekom.rs.

ICQ: 66444502


+47 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 16:32 - pre 170 meseci
Ajd sto se tice neke desktop aplikacije ja i kontam zasto bi koristio klase, recimo pravim igricu gde ima puno elemenata na "sceni" koji imaju iste osobine samo sa drugacijim vrednostima, to je jedna klasa sa vise instanci. Zatim ako zelim da u ugru ubacim neki bolji element samo napravim klasu koja nasledjuje osnovne osobine prvog elementa ali dodaje neke svoje. Ovo em sto olaksava programiranje em je mnogo bolje sto se iskoriscenja memorije tice.
Naravno, tipicni primeri vozila -> automobil, kamion, traktor... itd
Sve je to cool za neku desktop aplikaciju, ali za web sajt mi to nikako ne ide u glavu zasto?
Recimo, ja pravim sajt za e-kupovinu, zasto ja moram korpu da napravim kao klasu? Zasto jednostavno ne napravim nekoliko funckija:
Code:

function insert_in_basket($who, $what, $how_much)
{
        $SQL = "INSERT INTO `basket` (`user`,`article`,`q`) VALUES ('$who', '$what', '$how_much')";
        ....
}

function get_articles_from_basket($who)
{
         $SQL = "SELECT `article`,`q` FROM `basket` WHERE `user` = '$who')";
         return $result
}

I ajde neka mi neko objasni sta ce mi ovde klasa?
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.dynamic.sbb.rs.



+13 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 17:06 - pre 170 meseci
@ksrele - Vidis druze, PHP nekad nije bio objektno orijentisan i sve je radjeno u proceduralnom stilu, tako da - tebe niko ne tera da ti koristis OOP, al, kad ga dobro razumes i shvatis njegovu primenu onda ce ti mnogo prirodnije i lakse biti da tako razmisljas ;)

@mitke013 - Malo si se losije izrazio u postu pre mog prethodnog komentara, zato sam ti rekao :-) Uglavnom, odgovoricu ti detaljnije malo kasnije, u guzvi sam sad malo ;)
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 17:46 - pre 170 meseci
Meni se ne dopada to tumačenje da napredni programeri koriste objektno-orijentisano programiranje, a početnici rade proceduralnom paradigmom. Takođe se ne slažem sa ocenom kako je OOP savršeno rešenje i u svakoj primeni sjajna stvar.

U nekoj drugoj tehnologiji ne bi svaki zahtev počinjao od nule pa bi mogao da imaš n objekata korpe smeštenih u memoriju tokom trajanja sesije. Svaki korisnik onda ima svoju korpu i u nju može da dodaje i iz nje vadi artikle. U PHP-u to nema puno smisla. Generalno većina klasa u veb aplikacijama izrađenim u PHP-u ima samo po jednu instancu pa prednost enkapsulacije podataka u neku ruku nestaje, a i polimorfizam se retko sreće. Preostaje nasleđivanje koje se obično koristi kao sintaksički dekorator.

Programiranje vođeno događajem uglavnom bolje odgovara dizajnu današanjih veb aplikacija (u PHP-u izraženo kroz dominantno korišćenje Controller obrasca).
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 18:07 - pre 170 meseci
Citat:
Goran Rakić: Generalno većina klasa u veb aplikacijama izrađenim u PHP-u ima samo po jednu instancu pa prednost enkapsulacije podataka u neku ruku nestaje, a i polimorfizam se retko sreće.

Ček, šta je npr. sa tzv. biznis objektima, na primer proizvodi koje korisnik meće u korpu? Nisu li oni idealni kandidati za instance?

BTW, neko je negde pitao kako da nauči OOP. Ja sam mu preporučio da nauči jedan čisti OO jezik i da ga koristi neko vreme. Uspeh zagarantovan. ;)
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 18:23 - pre 170 meseci
U pravu si, mada uglavnom nisu iz prostog razloga što ih uglavnom čuvaš u relacionoj, a ne u objektnoj bazi podataka. Pretvaranjem se gubi previše performansi a objekti retko imaju interakciju složeniju od standardnih CRUD operacija. PHP-ovi odlični asocijativni nizovi omogućavaju lepo pakovanje podataka kao alternativa.

U ostalim slučajevima mysqli_result::fetch_object() je zgodno rešenje.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 19:33 - pre 170 meseci
Citat:
Goran Rakić: U pravu si, mada uglavnom nisu iz prostog razloga što ih uglavnom čuvaš u relacionoj, a ne u objektnoj bazi podataka.

Ne vidim nikakvu vezu između toga u kakvoj bazi držiš podatke i kako ih posmatraš u aplikaciji.
Citat:
Pretvaranjem se gubi previše performansi a objekti retko imaju interakciju složeniju od standardnih CRUD operacija.

Ne vidim zašto bi se gubile performanse. Ti objektom možeš komotno da wrapuješ asocijativni niz ili šta-ti-već vraća DB sloj, bez ikakvog pretvaranja. Na kraju krajeva, ja sam govorio uopšteno, nevezano čak ni za PHP, a pogotovu ne za paket funkcija za rad sa bazama koji "dobiješ" uz PHP.

Ali ok, kontam da je PHP i nastao bez neke objektne vizije i da je OOP dodat usled pritiska jednog dela zajednice, tako da se slažem da OOP nije nikakav silver bullet za PHP aplikacije. Ali ipak nije istina da u njima za OOP nema mesta.
 
Odgovor na temu

vatri
Banja Luka, RS

Član broj: 68697
Poruke: 1006
*.dynamic.dsl.t-2.net.



+18 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 19:37 - pre 170 meseci
Mislim da previse generalizujete stvari. To je kao ona prica PHP vs. Java i slicne. Na kraju krajeva samo kodiranje aplikacije ( bilo web, bilo desktop ), oduzima manje od 50% vremena ( uglavnom ). Treba se odluciti za tehnicke stvari, tek nakon analize projekta.
Mozda je mali "off topic" ali sam samo htio skrenuti paznju, ne zamjerite :)

A inace rasprava mi se svidja i bilo bi dobro da se ovo prebaci u zasebnu temu!

edit: evo na primjer ovaj 'thread' je neaktivan vec 3 i po godine

http://www.elitesecurity.org/t...tite-li-PHP-OOP-Zend-Framework
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
195.252.79.*



+34 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 20:16 - pre 170 meseci
Citat:
ksrele
function insert_in_basket($who, $what, $how_much)
{
$SQL = "INSERT INTO `basket` (`user`,`article`,`q`) VALUES ('$who', '$what', '$how_much')";
....
}

function get_articles_from_basket($who)
{
$SQL = "SELECT `article`,`q` FROM `basket` WHERE `user` = '$who')";
return $result
}
[/code]
I ajde neka mi neko objasni sta ce mi ovde klasa?


Evo probacu ja; tvoj glavni program ce na osnovu URL-a da pozove neki tzv. modul. Posto Zend i Symfony to zovu action, i ja cu. Imaj na umu da je ovo iz glave i samo primer.
Znaci, korisnik je kliknuo na link: site.com/viewBasket.html . Kontrolor pozove action (ili modul) klasu pod imenom viewBasket i metodu index()
Code:

  class viewBasket extends BaseClass
  {
      public function index()
      {
          $this->assign( 'allProducts', Basket::getAll() ) ;
      }
  }


I to je to. Pritom tebe nimalo ne zanima kako ce to klasa Basket da uradi; da li ce izvuci iz $_SESSION-a, $_COOKIE-a ili iz baze... Nije bitno. Poenta je da jednom linijom imas sve sto ti treba sto je mnogo preglednije.
Vratimo se na pricu; kontroler je pozvao ovu metodu, metoda je uradila assign svih proizvoda i nakon toga kontroler uradi display fajla 'viewBasket/index.tpl' koji bi bio nesto poput:
Code:

{foreach from=$allProducts item=product}
Ime: {$product->getName()}
{/foreach}


Al zamisli sledecu situaciju; jednog dana hoces da ti sajt bude u vise jezika. Tada ti u tabeli products nece biti imena, vec ces koristiti neku many2many tabelu gde bi polja bila 'language_id' , 'product_id' i 'name'. Sta je poenta? Tebi ce i dalje .tpl fajlovi SVUDA da rade zato sto koristis metodu getName(). Jedino sto je potrebno jeste da izmenis tu metodu koja vise nece vracati sadrzaj kolone 'name' (jer je vise nema), vec na osnovu odabranog jezika da izvuce ime iz te many2many tabele.

Sta se desava kad korisnik hoce da doda nesto u korpu? Recimo da je link site.com/viewBasket/add/12.html . Kontroler pozove klasu viewBasket::add(12) , gde je 12 id proizvoda.
Code:

  class viewBasket extends BaseClass
  {
      
      public function add($id)
      {
              Basket::add($id) ;
              $this->assign( 'allProducts', Basket::getAll() ) ;
      }
  }

Opet; tebe ne zanima kako ce to metoda da uradi. Klasa Basket ce da upise u bazu, $_SESSION.... nebitno. Nadam se da me razumes sad.

Kako to konkretno ja radim? SVE klase nasledjuju klasu koja se zove BaseModel. Ona ima metodu getName() i koja izgleda ovako:
Code:

        public function getName()
        {
            return $this->hasRelation('Language') ? $this->getTranslatedField('name') : $this->name ;
        }


Metoda getTranslatedField() je malo ruznjikavo napisana pa je necu postovati dok je ne sredim. Elem; ako objekat ima relaciju sa Language klasom, znaci da je ime tog objekta u vise jezika. Tada se poziva getTranslatedField(). Ako nema relaciju, onda samo vrati sadrzaj kolone 'name'. Tako sam na samo jednom mestu sredio visejezicku podrsku. Ako te zanima kako taj program radi u praksi, posalji mi PM i dacu ti linkove podatke za login.

Jos nesto; sta dobijas nasledjivanjem? Pogledaj ovaj video ; ako pravilno postavis te action klase, dovoljno ti samo linija-dve da uradis prikaze forme, validaciju, obelezavanje gresaka itd. Evo kako jedna moja action klasa izgleda:
Code:

    class BannerManager extends AdminManager
    {
        public function index($page=1)
        {
            $dql = Doctrine_Query::create()->from('Banner b')->orderBy('b.updated_at DESC') ;
            $this->assign('allObjects', parent::setPagination($dql, $page)) ;
        }
        
        public function add()
        {
            $this->assign( 'object', parent::add(new Banner()) ) ;
        }
        
        public function edit($id, $page=1)
        {
            $this->assign('page', $page) ;
            $this->assign( 'object', parent::edit(Banner::getById($id)) ) ;
        }
        
        public function delete($id)
        {
            $this->assign( 'object', parent::delete(Banner::getById($id)) ) ;
        }
    }


Ovo je deo iz administracije programa koji sad radim. SVE te action klase su skoro identicne; jedino sto umesto Banner::getById($id) imas Events::getById($id) kod izmene eventa, User::getById($id) kod izmene korisnika itd. Znaci cist copy&paste i za par minuta si dobio prikaz, izmenu i dodavanje neke nove klase/tabele. Kod izuzetno cist, pregledan i lako se upgrade-uje.

Uf.... izvini sto je zbrda-zdola napisano, nadam se da si ukapirao poentu.
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
195.252.79.*



+34 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 20:38 - pre 170 meseci
Dodatak na prethodnu poruku:
BaseModel klasa ima i sledecu metodu:
Code:

public function save()
{
    parent::save() ;
    if ($this->hasRelation('Image')){
        foreach ($this->getImages() as $image)
            $image->rename($this->slug) ;
    }
}


Sta ona radi? Ako objekat ima relaciju sa slikama (Image klasa), onda ce sve slike koje pripadaju tom objektu biti preimenovane. Primer; imas klasu Article koja je u relaciji sa Image klasom. Kolonu 'slug' Doctrine sam generise i to se koristi za SEO linkove mada nije problem ni da sam napises takvu funkcionalnost.

Npr. Article ima kolonu 'title', a ti dodas clanak ciji je title 'Vanzemaljci napravili bosanske piramide': slug kolona automatski postaje 'vanzemaljci-napravili-bosanske-piramide'.

Dodao si par slika cija su imena 'trt-mrt.jpg', 'piramida.jpg' i '2134jksda.jpg'. Kad snimis taj clanak, gornja metoda ce preimenovati sve slike vezane za taj clanak u:
'vanzemaljci-napravili-bosanske-piramide.jpg'
'vanzemaljci-napravili-bosanske-piramide-1.jpg'
'vanzemaljci-napravili-bosanske-piramide-2.jpg'

itd. sto google mnogo voli.

Izmenio si title? Nema problema, metoda save() ce opet naterati sve slike da se preimenuju.

Image klasa ima (izmedju ostalog) kolonu 'filename' u kojoj se drzi ime fajla. rename($newName) ce prvo preimenovati fajl u slobodan naziv (kako ne bi doslo do prebrisavanja), update-ovati kolonu filename i snimiti sebe. Tj:
Code:

        public function rename($slug)
        {
            $fullname = $this->filename ;
            $fullname = explode('.', $fullname) ;
            $name = $fullname[0] ;
            $extension = $fullname[1] ;
            
            if ($name==$slug)
                return true ;
            $imageName = ROOT . $this->getImageFilename() ;
            $thumbName = ROOT . $this->getThumbFilename() ;
            
            $counter = 0 ;
            while( !Image::isAvailable($newname = $slug . ( $counter == 0 ? '' : '-' . $counter ). '.' . $extension) ){
                $counter ++ ;
            }
            
            rename($imageName, $this->getImageDirectory() . '/' . $newname ) ;
            rename($thumbName, $this->getImageDirectory() . '/thumbs/' . $newname ) ;
                
            $this->filename = $newname ;
            return parent::save() ;
        }
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.dynamic.isp.telekom.rs.



+218 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 20:45 - pre 170 meseci
@mitke013

Video sam tvoj primer za OOP, odgovarao si na moje pitanje.
Znam sta je OOP i koje su njegove mogucnosti ali nesto nisam naisao na neku primenu u php-u.
Konkretniju primenu sam video recimo u c#.

U PHP-u sam video kada su zeleli da postignu neku fleksibilnost u kodovima koji se masovno prodaju.
Meni je mnogo lakse kada radim neki sajt za jednog klijenta da prepravim postojecu funkciju a ne da nasledjujem klase i prepisujem metodu ili tako nesto.
Jednostavno nisam video neku pravu primenu. U javascript sam video lepe primene klasa.
Bas sada radim na kodu koji je sav u klasama i radjen, da tako kazem, po "vrh" pravilima, klase modeli xml itd ali taj kod se vuce na dedicated serveru sa 2 procesora i 4gb rama (generise stranicu 10-15 sekundi i CPU 100% zakucan.
Nasuprot tome imam sajt slicnih mogucnosti sem sto nije toliko fleksibilan po pitanju upgrade i sajt radi sa 50 puta manje potreba.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

ksrele
Programer - informatičar
Gold Drink D.O.O. Subotica
Subotica

Član broj: 14253
Poruke: 1642
*.dynamic.isp.telekom.rs.

ICQ: 66444502


+47 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 21:01 - pre 170 meseci
@mitke013
Ufff druze... ako si mislio da meni sve ovo objasnis malo je ovo previse za mene. Ja koristim samo i iskljucivo cisti PHP, bez ikakvih dodataka. Za pisanje koda koristim sta stignem, kako kad, nekad NuSphere (on je dobar kada radim cisti PHP), cesce DreamWeaver CS4 (on je idealan za HTML) a u mnogo slucajeva i obican, najobicniji Notepad2 (iz TotalCommander-a) jedino sto eto ima hightlighting coda u nojama a bez ikakvih dopunjavanja koda.
Meni je ovako sasvim OK.
Razmisljao sam ja da napravim sebi neke klasice koje bi samo ugradjivao u kod i koje bi mi odradjivale posao ali nisam nesto nasao pravi primer za to.... ako citam iz baze uvek na neki poseban nacin citam. Od 10 upita u bazu svaki je skroz prica za sebe. Negde imam 16 uslova, negde ni jedan, negde spajam 2,3 tabele u jedan JOIN i sta ti ja znam... tako da bi se namucio ko shaban da prvo napravim tu klasu a posle svaki put kada je koristim lupao bih glavu kako ono ide skraceni nacin povezivanja 2, 3 tabele, kako ono unosim uslove, dal ih odvajam zarezom ili pipe-om... pa ludilo.
Mozda jedina korisna klasa bi mi mogla biti klasa head, gde samo napisem:
Code:

$head->setEnc("utf-8");
$head->setTitle($naslov);
$head->addDescrpt("moj sajt","samo moj sajt","ja sam najsebicniji na svetu");
.
.
.
$head->DoTheJob();


A ove doktrine (ili sta je vec) pa neki Zend Frameworkovi... nemam pojma... dosta mi je .NET Frameworkova ne znam vise koja mi aplikacija trazi koji... :)

Salim se ja naravno, to sto ja to ne koristim i ne znam kako se koristi je moj problem i zaista ne smatram da je to losa stvar, naprotiv, dok toliko dobrih developera koristi te "alate" (ne znam kako da ih nazovem) SIGURNO valjaju i ko sam ja ta kazem "e pa ne valjaju i ne treba da se koriste".

Evo da vam docaram kakav sam ja po tom pitanju, ja sam naucio kako se koristi Smarty, napravio sam par sajtova sa njim ali mi JAAAAAAKO ide na zivac i totalno mi je nepotrebna stvar.
Ja kazem da nije nikakav problem da ja napravim dva PHP fajla:

1. index.php
Code:

<?php
$neka_promenjiva_ili_niz = "nesto iz baze... bla bla bla da ne pisem sada kod, svima je jasno";
include('index_design.php');
?>


2. index_design.php
Code:

<HTML>
<HEAD>
</HEAD>
<BODY>


<div> <?php=$neka_promenjiva_ili_niz[0]?> </div>

</BODY>
</HTML>


E ja sam vam veliki zagovornik da je Smarty nepotreban za ovakve intervencije. Doduse mozda je malo pametniji kada je rec o necem komplikovanijem ali... kad cemo koristi nesto extra komplikovano sto se ne mze resiti na ovako elegantan fazon sa sirovim PHP-om?

No, naucicu jos sve ove nove 'alate' pa cu ih mozda i koristiti.

E da, jos jedna stvar, pa ako ja napravim funkciju sa unos artikala u bazu i ja toj funkciji dodajem samo ID proizvoda, ID user-a i kolicinu proizvoda (i pri tom to radim preko AJAX-a) zasto ja moram da imam problema sa tim sta je u toj funkciji? Isto kao i ti sa klasom, kada ja zelim nesto da menjam oko citanja, dal se sada tabela zove drugacije ili se spaja fise tabela, i ti ja moramo da editujemo neki PHP file, zar je bitno koji file se edituje? Da li je moja izmena funkcije drugacija od tvoje izmene metode klase? U oba slucaja se iz direktnog koda ne vidi kako radi funkcija koja je u zasebnom file-u.
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
195.252.79.*



+34 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 21:20 - pre 170 meseci
Citat:
ksrele: @mitke013
Code:

$head->setEnc("utf-8");
$head->setTitle($naslov);
$head->addDescrpt("moj sajt","samo moj sajt","ja sam najsebicniji na svetu");
.
.
.
$head->DoTheJob();




Evo kako bih ja to uradio na tvom mestu:
Code:

class Page 
{
// ovde ide definicija za svaku stranicu; konkretno, definises polja title, description i keywords... i metodu save() koja bi ta polja snimila u bazu

public function show()
{
  echo '<title>' . $this->title '</title> ;
  echo '<description>' . $this->title '</description> ;
  echo '<keywords>' . $this->title '</keywords> ;
  // ili kako vec idu ti tagovi, ne znam ih napamet
}
}


Poenta: svaka stranica ima svoje title itd tagove. Ucitas sadrzaj te stranice i samo uradis $page->show() (ili slicno) . Ne saljes parametre, metoda ce sama pobrine oko toga.
Citat:


<div> <?php=$neka_promenjiva_ili_niz[0]?> </div>



Na php.net mozes videti da se ne preporucuje koriscenje <?php= sintakse. Problem br.2 ; kako ces spreciti ubacivanje javascripte i html tagova? Tada gornja linija postaje
Code:

<?php echo htmlentities($nekaPromenljiva, 'utf-8', ENT_QUOTES);?>

nasuprot:
Code:

{nekaPromenljiva|escape}


Citat:

E da, jos jedna stvar, pa ako ja napravim funkciju sa unos artikala u bazu i ja toj funkciji dodajem samo ID proizvoda, ID user-a i kolicinu proizvoda (i pri tom to radim preko AJAX-a) zasto ja moram da imam problema sa tim sta je u toj funkciji? Isto kao i ti sa klasom, kada ja zelim nesto da menjam oko citanja, dal se sada tabela zove drugacije ili se spaja fise tabela, i ti ja moramo da editujemo neki PHP file, zar je bitno koji file se edituje? Da li je moja izmena funkcije drugacija od tvoje izmene metode klase? U oba slucaja se iz direktnog koda ne vidi kako radi funkcija koja je u zasebnom file-u.


Da, ovde si u pravu. Razlika je sto ce __autoload sam da ucita klasu npr. Basket i pozove metodu npr. Basket::add($id), dok bi proceduralno ti morao da pises 'require' za tako nesto. Takodje, u phped-u (i ostalim), jednim klikom ce program sam da 'skoci' na tu klasu.
Sa druge strane; proceduralno zahteva da funkcija ima neki parametar; sta se desi ako prosiris tu funkciju? Onda na svakom mestu gde se ta funkcija poziva, moras da proveris slanje parametara. Kod OOP-a, samo se metoda menja; neophodne parametre ce jako lako izvuci i sama.
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
195.252.79.*



+34 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš15.04.2010. u 21:28 - pre 170 meseci
Citat:
VladaSu: @mitke013
Meni je mnogo lakse kada radim neki sajt za jednog klijenta da prepravim postojecu funkciju a ne da nasledjujem klase i prepisujem metodu ili tako nesto.
Jednostavno nisam video neku pravu primenu. U javascript sam video lepe primene klasa.
Bas sada radim na kodu koji je sav u klasama i radjen, da tako kazem, po "vrh" pravilima, klase modeli xml itd ali taj kod se vuce na dedicated serveru sa 2 procesora i 4gb rama (generise stranicu 10-15 sekundi i CPU 100% zakucan.
Nasuprot tome imam sajt slicnih mogucnosti sem sto nije toliko fleksibilan po pitanju upgrade i sajt radi sa 50 puta manje potreba.


100% sam ubedjen da tu nesto nije u redu sa programom ili serverom; apsolutno je nemoguce da OOP 50 puta uspori izvrsavanje programa. Pre nedelju-dve sam radio citanje tabele Wallpaper (oko 300) sa leftjoin svih slika (oko 3200), bez hidratacije (znaci instanca klase, ne niz podataka) i doctrine mi to vratio za manje od 200ms. A ja ne stedim na nasledjivanju:
class Wallpaper extends BaseWallpaper extends BaseModel extends Doctrine_Record extends itd... dalje nisam gledao.
 
Odgovor na temu

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
*.dynamic.isp.telekom.rs.



+7 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš16.04.2010. u 10:00 - pre 170 meseci
Jeste da idem sada u off topic ali da ne postavljam novo nesto... U vezi smary-ja
Downloadovao sam ga ubacio na server vidim ima demo verzija mislim ne kapiram je skroz
a dosta ljudi hvale i dosta su mi preporucili.Sta mogu sve sa njim da radim jel to ono bas pocetno temeljno
Ako moze par reci o smartiju cisto da znam o cemu je stvarno rec sa smartijem....

Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

ColdKeyboard
Sasa Karanovic
Hardware and Firmware Engineer
Toronto, Canada

Član broj: 31924
Poruke: 868
*.dynamic.sbb.rs.

Jabber: ColdKeyboard
Sajt: www.SasaKaranovic.com


+11 Profil

icon Re: Naučiš sve i na kraju ne znaš kako da kreneš16.04.2010. u 10:18 - pre 170 meseci
Evo ti ovdje sta je smarty i sta sa njime sve mozes da uradis i za sta je dobar. *link*

Ukratko Smarty je jedan od mnogih template enginea koji ti omogucava da razdojis aplikaciju na dizajn i kod odnosno da imas posebne HTML/TPL fajlove za dizajn
i posebne .php fajlove gdje ces drzati svoj kod.

I onda recimo u kodu ti uradis $smarty->assign('varijabla', 'Vrijednost'); a u .tpl/.html kodu stavis {$varijabla} i template engine ce taj dio {$varijabla} da zamjeni sa 'Vrijednost'.

Da bi koristio smarty jako je pozeljno da poznajes PHP... :)
 
Odgovor na temu

[es] :: PHP :: Naučiš sve i na kraju ne znaš kako da kreneš

Strane: 1 2 3

[ Pregleda: 12072 | Odgovora: 43 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.