Gå til innhold

Liten PHP statusoppsumering


Anbefalte innlegg

PHP er i ferd med å gjennomgå store endringer, det virker som mange utviklere ikke henger med på hva som skjer eller rett og slett ikke har oppdaget alle mulighetene, Derfor tenkte jeg at jeg skulle prøve å oppsumere litt samt komme med noen råd om hvordan man kan utnytte disse endringene.

 

Først: Det er lenge siden PHP5 kom, men fortsatt sitter mange og koder til PHP4. Forsåvidt greit det da PHP4 fungerer helt fint, men...! Skal man bruke masse tid på å lage kode som man blir nødt til å skrive om da PHP4 utgår (Den tid kommer!) bør man ihvertfall være klar over det så man kan gjøre et bevisst valg og forbedrede seg til konsekvensene samt vite hva man går glipp av.

Den største forbederingen til PHP5 er støtten for objekts-orientert programmering, mulig du knapt vet hva jeg snakker om nå, men denne typen programmering er kommet for å bli i PHP og for å gjøre livet ditt mye enklere.

 

For ganske lenge siden ble også PHP5.1 sluppet, med denne kom det store oppgradering til flere av modulene. Særlig datetime-funksjonene ble kraftig oppgradert og fikk blant annet muligheten for å endre timezone i scriptet (Veldig praktisk vis du har en server i utlandet.)

 

Nå nylig kom også versjon 5.2 som introduserte særlig en ny praktisk module, nemlig Filter (http://no2.php.net/manual/en/ref.filter.php).

Denne kan brukes til å filtrere input-data fra brukeren etter alle mulige regler som gyldig epostadresse, url, ip string, integer osv osv.

Med tanke på at de fleste sikkerthetshull oppstår på grunn av dårlig filtrert data og hvor komplisert det er å lage et skikkelig bra filter-system er denne modulen kjærkommen. En annen forbedering jeg er glad for er at problemene rundt den magiske metoden __toString() er fikset. Samt mye annet snacks:

http://no2.php.net/releases/5_2_0.php

 

For å gjøre det hele mer komplisert er også versjon 6 på vei, selv om det nok blir lenge til endelig versjon. PHP6 kommer ikke til å være en like stor oppgradering som det PHP5 var, men den kommer til å foreta en stor opprydding. Alle de tingene som har plaget PHP-utviklere mest kommer til å bli fjernet helt! Og da mener jeg helt! Det vil ikke bli noen innstillinger for å skru det på.

Da snakker jeg (selvsagt) om ting som register_globals (roten til mange sikkerthetshull), magic_quotes (roten til masse problemer samt sikkertshull), safe_mode vil også bli borte (takk og pris!) da denne innstillingen har virket helt mot sin hensikt. Koden ble ikke sikrere, bare mer begrenset., så "safe"_mode forsvinner. :D

"<?" - kortversjonen av php-starttagen vil også forsvinne helt og kan ikke brukes.

I tillegg vil alt som henger igjen fra PHP3 også bli fjernet helt.

I denne versjonen er det ingen nåde, så du kan bare bytte ut gamle metoder først som sist.

Mer komplett oversikt over endringer for PHP6 finnes her:

http://php.net/~derick/meeting-notes.html

 

Jeg vil råde alle til å gå gjennom sine måter å kode på og sikre deg at koden er i tråd med den utviklingen PHP har samt at du benytter deg av alle de smarte modulene PHP har fått.

Særlig vil jeg på det sterkeste anbefale alle og sette seg godt inn i hva objekts-orientert programmering (OOP) er, samt hvordan man kan bruke dette til å kode mest mulig effektivt.

 

Så vil jeg anbefale alle å vrake mysql-modulen! Den er fullstendig utgått på dato og vil bare skaffe deg problemer. Bruk PDO-modulen istedenfor (eller mysqli), med disse vil du også få uttelling for dine nyervervede OOP-kunnskaper. Ennå bedre vil det være å bruke et rammeverk (PEAR, ZEND etc) for DB-tilkoblingen din,

 

Exceptions er en av de aller nyttigste tingene som PHP5-introduserte. Jeg husker at før jeg tok Exceptions i bruk var nesten hver 4. linje med kode for å sjekke etter feil. Det er ekstremt mye! Etter å ha tatt i bruk Exceptions har jeg kunnet kutte bort de fleste av disse linjene! Da sier deg seg vel selv at effektiviteten øker!! Kort sagt vil jeg forklare Exceptions som en måte å flytte all feilhåndtering til ett sted i koden.

Gå gjennom koden du skriver og analyser hva som egentlig trengs og hva som i realiteten er feilhåndtering. Husk at en feil kanskje oppstår ca. hver 10000. gang og da er tull å basere så mye kode på feilhåndering. I tillegg er en haug av if-tester dårlig for ytelsen.

 

Jobber du med større prosjekter er strukturering ekstremt viktig, En smart måte å hindre unødig kode er å bruke MVC - Model View Controller. Meningen med dette er å separere de tre delene for høyest mulig effektivitet og fleksibilitet.

 

devzone.zend.com er en flott ressurs for mye av disse tingene. Sjekk særlig ut disse seksjonene:

XML

Exceptions

Filtering

AJAX

Artikler

 

Kort oppsumert vil PHP bringe veldig mye nytt og bra, men det vil kreve at man innvesterer litt tid for og sette seg inn i det

 

Jeg vil også nevne det jeg synes er et veldig spennende prosjekt, nemlig PHP-GTK (gtk.php.net). Trodde du at PHP kun kunne brukes til web-sider? Tro omigjen! Med PHP-GTK2 får du full tilgang til Gtk - rammeverket for å lage grafiske brukergrensesnitt. Enkelt er det også! Ved hjelp av Glade (glade.gnome.org) kan man faktisk designe hele programet kun med musa. :cool:

Så blir du lei av websider, ta en titt på PHP-GTK og lag ditt første "ordentlige" program!

 

Kunne sikkert skrevet to sider til, men dette får vel holde!? :p Håper noen har nytte av det :)

Lenke til kommentar
Videoannonse
Annonse

Huff.

PHP6 kommer med mye bra, men ekstremt mye idioti også.

Fordi PHP skal være så enkelt(KISS) så oppfordrer de nærmest til mye stygg kode.

Og det at de ikke vil rette inkonsistenser fordi det kan ødelegge scripts synes jeg er HELT på trynet.

 

As there are not many inconsistencies, and changing them would cause quite some problems for current applications we decided not to change the order.

Det er FÅ inkonsistenser, det burde vært ingen. Og når det er FÅ, så burde de søren døtte fikse det.

Lenke til kommentar
  • 2 uker senere...
Huff.

PHP6 kommer med mye bra, men ekstremt mye idioti også.

Fordi PHP skal være så enkelt(KISS) så oppfordrer de nærmest til mye stygg kode.

Og det at de ikke vil rette inkonsistenser fordi det kan ødelegge scripts synes jeg er HELT på trynet.

 

As there are not many inconsistencies, and changing them would cause quite some problems for current applications we decided not to change the order.

Det er FÅ inkonsistenser, det burde vært ingen. Og når det er FÅ, så burde de søren døtte fikse det.

7394829[/snapback]

Få? Synes ikke det er få. Noe jeg stadig irriterer meg grønn over er de utallige inkonsekvensene i PHP. Det er en salig blanding av to/2 og funksjoner med og uten _. hex2bin, strtolower, isset, is_null osv. Hvorfor har man ikke en konsekvent naming convention? Så har man jo selvsagt forsøkt å bøte på noe av problemet. Første og beste eksemplet jeg kan komme på er mysql_select_db og mysql_selectdb, og det er ikke akkurat et enestående eksempel.

 

Kort sagt er det utrolig irriterende og vanlig i PHP. Dessverre har det gått så langt at det ikke er mulig å fikse det uten å gjøre så og si samtlige applikasjoner ubrukelige.

 

Edit: Ja, en ting til. Man har jo også funksjoner på formen "verb objekt" mens andre er på "objekt verb". Konsekvent? :no:

Endret av Ernie
Lenke til kommentar
Få? Synes ikke det er få. Noe jeg stadig irriterer meg grønn over er de utallige inkonsekvensene i PHP. Det er en salig blanding av to/2 og funksjoner med og uten _. hex2bin, strtolower, isset, is_null osv. Hvorfor har man ikke en konsekvent naming convention? Så har man jo selvsagt forsøkt å bøte på noe av problemet. Første og beste eksemplet jeg kan komme på er mysql_select_db og mysql_selectdb, og det er ikke akkurat et enestående eksempel.

 

Kort sagt er det utrolig irriterende og vanlig i PHP. Dessverre har det gått så langt at det ikke er mulig å fikse det uten å gjøre så og si samtlige applikasjoner ubrukelige.

 

Edit: Ja, en ting til. Man har jo også funksjoner på formen "verb objekt" mens andre er på "objekt verb". Konsekvent? :no:

7477388[/snapback]

Jeg er helt enig, men jeg mener at man heller får ødelegge samtlige applikasjoner for å få et skikkelig språk, enn å drive på sånn som de gjør nå.

De som ikke kan fikse applikasjonene sine, får heller droppe å oppgradere PHP.

Alternativet er en mykere overgang. Der man legger inn dubletter, som fjernes ved neste major release eller noe.

Lenke til kommentar
Få? Synes ikke det er få. Noe jeg stadig irriterer meg grønn over er de utallige inkonsekvensene i PHP. Det er en salig blanding av to/2 og funksjoner med og uten _. hex2bin, strtolower, isset, is_null osv. Hvorfor har man ikke en konsekvent naming convention? Så har man jo selvsagt forsøkt å bøte på noe av problemet. Første og beste eksemplet jeg kan komme på er mysql_select_db og mysql_selectdb, og det er ikke akkurat et enestående eksempel.

 

Kort sagt er det utrolig irriterende og vanlig i PHP. Dessverre har det gått så langt at det ikke er mulig å fikse det uten å gjøre så og si samtlige applikasjoner ubrukelige.

 

Edit: Ja, en ting til. Man har jo også funksjoner på formen "verb objekt" mens andre er på "objekt verb". Konsekvent? :no:

7477388[/snapback]

Jeg er helt enig, men jeg mener at man heller får ødelegge samtlige applikasjoner for å få et skikkelig språk, enn å drive på sånn som de gjør nå.

De som ikke kan fikse applikasjonene sine, får heller droppe å oppgradere PHP.

Alternativet er en mykere overgang. Der man legger inn dubletter, som fjernes ved neste major release eller noe.

7478047[/snapback]

Problemet er bare at webhostene vil vegre seg for å foreta seg oppgraderinger som får slike konsekvenser. En myk overgang vil selvsagt hjelpe, men en eller annen gang må endringen skje ...

 

Riktignok, jeg synes slik endring burde skje, men jeg frykter som sagt at endel webhoster vil vegre seg.

Lenke til kommentar

Nå er jo PHP6 den første versjon hvor de "gir blaffen" i bakoverkompatibilitet så da burde de jo også kunne fikse noen funksjonsnavn, men jeg har ikke hørt noe om at de skal det...

Web-hoster flest kommer ikke til å oppgradere til PHP6 på veldig lenge uansett,

PHP6 introduserer såpass lite nytt, men vil miste fullstendig muligheten for å kjøre PHP4-script så det kommer nok til å gå enda tregere fra 5 til 6 enn prosessen med å oppgradere fra PHP4 til 5.

Lenke til kommentar
Kommer PHP6 til å bli raskere enn de foregående versjonene? Mtp. mindre bakoverkompatibilitet som sinker.

7478617[/snapback]

 

Har et gått håp om det :)

Noen av målene med PHP6 er å luke ut alt unødvendig og optimalisere yteligere

Og sånt pleier å resultere i bedre ytelse.

Samtidig legges det til ny funksjonalitet i språket som kan komme til å koste litt.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...