Struktur av PHP-side

Struktur av PHP-side

Innleggav ellevset » tir 03.08.2010 11:46

Hei
Driver å leker litt med PHP/mySQL for å erstatte Excel som databaseverktøy. Excel har det med å være temmelig ubrukelig når man får litt data å ta vare på.

Tanken er å bruke en webside som frontend/GUI for databaser som brukes av flere brukere, for å gjøre det enklere å ha oversikt over de data vi har.

Har en del erfaring med PHP/mySQL, så jeg har satt sammen en del verktøy for å søke i database, legget til og endre ting i databasen, samt noe enkel statistikk.

Før jeg kommer for langt i web-utviklingen har etterforsket litt på hva som er en god struktur av websiden.
Slik jeg har gjort det til nå, har jeg et skript som kjøres som bruker include til å hente inn header/footer og den siden man navigerer til.
Alternativt så kan man vel bruke include i hvert skript for å hente inn header/footer.

Er det noen som har noe erfaring med hva som er mest egnet? Her er det ikke snakk om å lage en pen side, men heller en som er rask. Siden skal også kunne behandle forskjellige temera, f.eks. jeg har et sett med skript som tar for seg oversikt over prosjekter, et sett som tar for lagring av statistisk data og et siste som ser på økonomi.

Det er viktig at det er oversiktlig, dersom jeg ønsker å legge til mer funksjonalitet senere så kan det gjøre temmelig enkelt.

Brukerens avatar
medlem i 220 måneder
 

Re: Struktur av PHP-side

Innleggav Brakkvatn » tir 03.08.2010 16:11

Jeg tror din fremgangsmåte kan være ganske grei. At hvert enkelt skript laster inn nødvendige filer for å vise header/footer.

Et annet alternativ er jo å gjøre det andre veien rundt. Man har et PHP-skript som laster inn klasser/skript alt ettersom hvilke parametre som sendes til den. Jeg ser ikke mye forskjell i hva som er mest praktisk av disse to fremgangsmåtene. Kommer vel kanskje an på smak og behag.

Et annet alternativ er å bruke et rammeverk som f.eks Zend Framework til å vise innholdet. Man kan da cache visninger og slikt. Ta en titt på Zend_View.
http://framework.zend.com/manual/en/zend.view.html

Et annet bibliotek som gjør litt det samme er Smarty. Men jeg innbiller meg at Smarty er tregere enn Zend_View da Smarty må tolke koden i malene dine, hvor Zend istedet tillatter deg å legge inn PHP-kode som ikke trengs å tolkes enda en gang. Kanskje noen andre her inne har mer erfaring med forskjellen her.

Brukerens avatar
medlem i 192 måneder
 

Re: Struktur av PHP-side

Innleggav ak » ons 04.08.2010 0:09

PHP gjør det ekstremt vanskelig å skrive god kode, man må være svært disiplinert. Python er i så måte enklere.

Jeg vil råde deg å separare presentasjon (templates) fra "business logic". Det vil si lag en modell som representerer de dataene du har på en god måte, og finn ut etterpå hvordan du skal presentere de. Det siste går *veldig* kjapt hvis du har gjort det første riktig.

Administrator
Brukerens avatar
medlem i 236 måneder
 

Re: Struktur av PHP-side

Innleggav Brakkvatn » ons 04.08.2010 7:15

Å separere visning fra logikk er et bra poeng.

Hva jeg gjerne ville hatt mer utdypt er på hvordan du mener PHP gjør det ekstremt vanskelig å skrive god kode. Det høres mer ut som en smakssak, eller er det noe spesifikt du tenker på?

Brukerens avatar
medlem i 192 måneder
 

Re: Struktur av PHP-side

Innleggav ellevset » ons 04.08.2010 8:15

Jeg lurer og på hva du mener med ekstremt vanskelig. Koden blir ikke like strukturert som python (som jeg er en stor fan av), men ekstremt vanskelig er vel å ta i litt?

Jeg har prøvd å separare funksjon fra visning ved bruk av

header(Location: ...)
http://php.net/manual/en/function.header.php

På den måten blir skript som skriver til databasen kun kjørt en gang, og så blir man dirigert til et skript som kun leser fra databasen.

Dette er interne sider, så jeg har et relativt lav fokus på sikkerhet. Jeg ønsker kun å unngå bruker-feil, f.eks. at man refresher siden og legger inn X ganger like innlegg i databasen.

Brukerens avatar
medlem i 220 måneder
 

Re: Struktur av PHP-side

Innleggav ak » ons 04.08.2010 8:42

Det er (minst) tre ting som gjør at jeg synes det er vanskelig å skrive god kode i PHP
1) Det er veldig fristende å starte med å bygge maler, PHP ble tross alt laget for å dytte dynamiske ting inn i sider som ellers er statiske. Det blir ihvertfall fort til at man bygger opp tekststrenger i hytt og pine i koden, istedet for å ta med seg alle verdiene ut til templatene.

2) Språket støtter objektorientering, men de fleste av APIene som følger med er ikke objektorienterte. F.eks. strings, mysqli, curl eller GD, de representeres som objekter, men så er det egentlig bare et objekt som man stapper masse konstanter inn i for å konfigurere. Resultatet er som regel også en buffer av et eller annet slag, ikke et resultatobjekt. Sånt smitter.

3) Dette med at programmet starter på nytt hver gang en side lastes gjør også at ting blir litt klønete. F.eks. i en Java servlet så har man egne deler av koden som laster konfigurasjon og klargjør programmet, og så kan man glemme den koden hvis man jobber med noe annet. I PHP må man stadig til MySQL databasen for å hente de mest trivielle verdiene. Eksempelvis listen over forum, som egentlig bare burde presenteres i en struktur i minnet. Da ville man representert et filter som nettopp det det er, nå lager man gjerne en komplisert struktur som gjør det mulig å modifisere SQL spørringen for å spare å hente unødvendige ting fra databasen.

Som sagt, det er kun et problem dersom man ikke holder seg selv i skinnet. Jeg har funnet det enklere å gjøre det "riktig" når jeg må forholde meg til et rammeverk som f.eks. Drupal. Jeg lever stort sett av å kode Java og ymse programmeringsspråk ingen har hørt om, så det er uansett ikke så mange timer i uken jeg tilbringer med PHP.

Administrator
Brukerens avatar
medlem i 236 måneder
 

Re: Struktur av PHP-side

Innleggav Brakkvatn » fre 06.08.2010 15:08

Når det gjelder maler, så kan man gjøre dette vha. Smarty, Zend og som du nevnte, ak, Drupal.

Objektorienteringen til PHP er ikke den beste, men dette er ikke et stort hinder for effektiv utvikling vil jeg si. Dessuten har en del rammeverk klasser for interaksjon med de ikke-objektorienterte sakene i PHP. Dette er kanskje bare et lite plaster på såret.

At hele prosessen må startes på nytt og tusen spørringer må gjøres hver gang en får en forespørsel fra en besøkende er et stort problem med PHP. Hvordan er det med Java/Ruby On Rails/Python osv. her? Kan man ha persistent lagring i alle disse?

En annen ting, ak. Jeg ble fortalt at Java servlet bruker en del mer minne enn PHP. Hva er din erfaring med dette?

Men hvis størrelsen på ellevset sin applikasjon ikke er så stor, og det ikke er krav for maksimal optimalisering, så vil jeg si at PHP er ypperlig. Veldig enkelt å starte utviklingen i PHP og få ting oppe og gå.

Brukerens avatar
medlem i 192 måneder
 

Re: Struktur av PHP-side

Innleggav ak » lør 07.08.2010 1:07

Jeg vil vel ikke referere til det som "persistent lagring", men i Java (, Ruby og Python, dersom de ikke kjøres som CGI) så forblir programmet i minnet. Du programmerer på en helt annen måte, og må ta høyde for om objektene dine er "thread safe" (kan deles av flere forespørsler) eller ikke. Dersom de ikke kan det må du opprette nye hele tiden (uten at det er noe problem, det dreier seg jo bare om en liten del av applikasjonen).

Programmer som er skrevet i Java har en tendens til å bruke mer minne, ihvertfall på papiret. Årsaken til det er større gjenbruk av kode, dvs. at man bruker generiske biblioteker fremfor å skrive alt fra scratch for hvert program. Man bruker kanskje to-tre rammeverk i en typisk PHP applikasjon, i Java er det ikke uvanlig å dra inn 10 ganger så mange. Det høres kanskje negativt ut, men kvaliteten på mange av disse tingene er mye bedre enn det man kan snekre selv. Samtidig, fordi du ikke trenger å laste hele applikasjonen hele tiden, trenger du mindre ressurser per forespørsel.

Eksempelvis kjører disse nettsidene som regel med 128 Mb RAM per tråd og opptil 80 CGI prosesser. Dvs. vi kan bruke mellom 128 Mb og ca 10Gb RAM til PHP. Hadde dette kjørt i Java hadde vi antageligvis trengt å sette av minimum 512 Mb, men ikke behøvd mer enn 1 Gb total for å håndtere det samme som 80 CGI prosesser. Belastningen ville sannsynligvis også vært mye mindre, ikke minst mot databaseserveren.

Forklaringen ovenfor er ganske tynn, det finnes mange flere aspekter som man må ta hensyn til. Som sagt synes jeg at PHP er helt greit, jeg bruker ihvertfall ikke Java for å lage enkle nettsider. Bare for å ha nevnt et alternativ synes jeg at Pylons er et eksempel på et rammeverk (i Python) som gjør mye riktig.

Administrator
Brukerens avatar
medlem i 236 måneder
 

Re: Struktur av PHP-side

Innleggav Brakkvatn » tir 10.08.2010 18:01

Hei, ellevset og ak!

Etter å lese ak sine innlegg tok jeg for meg å prøve ut et rammeverk for python med navnet django. Og jeg må si at så langt virker det som et effektivt og strukturert rammeverk. Så kanskje python ikke er så dumt?

Brukerens avatar
medlem i 192 måneder
 

Re: Struktur av PHP-side

Innleggav ellevset » lør 21.08.2010 2:35

Skjønner at dere programmerer på et nivå atskillig høyere enn det jeg er på. Kommer nok til å satse på php for nå, men jeg syns django så veldig interessant ut. Kommer virkelig til å eksperimentere litt med det og fremover.

Brukerens avatar
medlem i 220 måneder
 


Returner til PHP



Hvem er i Forumene

Registrerte brukere: Google [Bot]