Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  7 2724
Hei,
er det noen andre som har latt seg "fange" av MVC-lignende patterns i php?

Har drodlet litt rundt et eget rammeverk et års tid nå, for å prøve ut forskjellige MVC-metoder (mvvm,mvc,++).

Er interessert i å ha en diskusjon om de forskjellige måtene å løse routing, dependency injection, inheritance og "hjelpeklasser".

Pr. nå har jeg laget meg en dispatcher/router som laster inn riktig controller->method via url (om den eksisterer). Jeg bruker en ferdig DIC som heter Pimple (veldig lettvekt), og for templating bruker jeg bare php <?=$var?> i php templates, da jeg ikke ser noen spesiell grunn for å bruke/lære en annen syntax for templating.

Jeg har da en controller, en model, og en view for hver "triade". Controlleren tar i prinsipp bare logiske avgjørelser, f.eks "Har bruker trykket på en knapp? Ok, last inn dette viewet.". Viewet henter da relevant data fra model, og pusher det i en templateclass som laster inn rette templates, og bytter ut variabler. (_get _set). Alt blir returnert tilbake til index.php hvor dispatcheren echoer resultatet fra controller->method, som igjen får alt returnert fra viewet.

Hvordan gjør dere ting?
Sist endret av Opplyst; 24. januar 2015 kl. 14:40.
Det hjelper veldig å ta i bruk rammeverk når man driver med slike oppsett. Zend framework kan være verd å ta en titt på.
Hei,

Vil anbefale deg å ta en titt på Twig som template-engine. Enkel syntax, veldig raskt og kraftig. Blir mye ryddigere templates. Fordelen er at alt kompileres til optimalisert PHP-kode, og dersom du installerer Twig sin C extension på serveren får du rundt 10-15% ytelsesforbedring.

Selv bruker jeg som regel Silex til små prosjekter. Veldig lightweight rammeverk. På større prosjekter er Symfony2 sjef.
Sist endret av danielsk; 24. januar 2015 kl. 14:49.
Trådstarter
Jeg glemte å spesifisere. Jeg er ikke spesielt interessert i å diskutere tredjeparts rammeverk per se, det gjør man jo hele tiden ellers.
Jeg ønsket det skulle handle om "egne" erfaringer med å lage slike ting.

Det vil si, helt fra det filosofiske planet som "finnes virkelig MVC for PHP?" til konkrete eksempler på f.eks hvorfor bruke/ikke bruke DIC. Hvor skal views få dataen sin fra? fat/thin controller m.m

Har prøvd meg litt på Zend, Symfony, Laravel, Twig, Smarty m.m. Alle de nevnte her virker veldig bra til sitt bruk, og om jeg skulle i gang med et seriøst prosjekt nå, ville jeg helt klart gått for Symfony2.
Sist endret av Opplyst; 24. januar 2015 kl. 14:56.
Tingen er at man ikke nødvendigvis trenger å finne opp hjulet på nytt igjen. Å implementere MVC inn i PHP er tungvindt og blir ofte bare halvgode løsninger - og med tanke på at det finnes masse gode rammeverk laget for å løse akkurat dette problemet i PHP ser jeg ingen behiv for å implementere det i fra bunnen av, med mindre det er for læringsutbytte.

Så min anbefaling er heller å bli kjent med ulike rammeverk, og så velge riktig verktøy til riktig jobb - i stede for å lage det fra bunnen av selv.
Sist endret av etse; 24. januar 2015 kl. 15:48. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Trådstarter
Sitat av etse Vis innlegg
Tingen er at man ikke nødvendigvis trenger å finne opp hjulet på nytt igjen. Å implementere MVC inn i PHP er tungvindt og blir ofte bare halvgode løsninger - og med tanke på at det finnes masse gode rammeverk laget for å løse akkurat dette problemet i PHP ser jeg ingen behiv for å implementere det i fra bunnen av, med mindre det er for læringsutbytte.

Så min anbefaling er heller å bli kjent med ulike rammeverk, og så velge riktig verktøy til riktig jobb - i stede for å lage det fra bunnen av selv.
Vis hele sitatet...
Der kommer vi til kjernen. Det er vanskelig, og man lærer mye av å gjøre det selv. I dødperioder så liker jeg å utfordre meg selv, det være seg innen programmering, databasedesign eller motorcross e.l.


Selv om kjerrehjulet er en gammel oppfinnelse, så har det stort sett bare formen (sirkel) og funksjonen (rulling) til felles med f.eks romfergehjul. Det er ingen grunn til å "ta til takke" med noe, om man selv føler at man kan løse det bedre ift. den oppgaven kan har.
Sist endret av Opplyst; 24. januar 2015 kl. 20:16.
Jeg mener den største ulempen med de fleste Php-rammeverk er database-layeret. Bruker som oftest sql-basert backend og har ofte ergret meg over den oversimplifiserte abstraksjonen rammeverkene prøver å tilby, samtidig som de gjør det vanskelig å bruke reelle/native spørringer.
Det jeg har mest nytte av fra eksisterende løsninger er caching, sikkerhet og generelle utilities.
▼ ... noen uker senere ... ▼
MVC er vel mer egnet i android UI, Linux UI, Mac/iOS UI, web UI, Windows UI, o l? Tror ikke man bør ha ambisjoner om å benytte php lenger enn til web service, om enn så. Selv har jeg byttet fra python og php til http://nodejs.org for web services også.
Sist endret av nudo; 22. februar 2015 kl. 08:40.