Archive for the 'php' Category
50 nyttige PHP-verktøy
Smashing Magazine har publisert en liste med 50 nyttige PHP-tips. Kan være verdt en titt. Sjekk:
Av det som nevnes, bruker jeg nå Zend Studio (ikke 6 riktignok, men den gamle versjon 5.5) og Selenium.
phpMyAdmin har jeg brukt noe, men bruker daglig mest MySQL Gui Tools (selv om den fortsatt er ganske buggete på OSX)
Jeg vurderer sterkt å teste de nevnte graph-tegnerne, da jpgraph som jeg bruker i dag, aldri falt helt i smak hos meg.
Ellers vurderer jeg å prøve WideImage, PHP Profile Class, Xdebug, SimpleTest, og Phing
__autoload i PHP5
Lei av å inkludere hauger av klassefiler i PHP? Prøv __autoload!
Obs! Autload fungerer kun i PHP5
Autoload er en funksjon som kalles ved bruk av en udefinert klasse eller interface.
Eks:
<?php
function __autoload($class_name) {
require_once $class_name . '.php';
}
$obj = new MyClass1();
$obj2 = new MyClass2();
?>
Høres dette skummelt ut? Som alltid bør slike funksjoner brukes med fornuft.
Her er et par ting å tenke på:
- Vurder å vaske $class_name-parameteren. For å minimere hacker-muligheter.
- Feil kan ikke fanges med catch inne i __autoload-funksjonen.
Tenk også på kodens lesbarhet. I noen tilfeller kan include være nyttig for å synliggjøre avhengighet til visse klasser.
Selv bruker jeg autoload på løse avhengigheter som f.eks Log, Profiler eller Cache-klassene, men lar include gjerne stå ved sterke knytninger.
Her er min autoload-funksjon med whitelist-vasking av $class_name parameteren:
function __autoload($class_name) {
// Whitelist-vasking
$class_name = preg_replace( "/[^a-zA-Z0-9_]/", "", $class_name );
// Sjekk etter filene i alle include-kataloger
$include_path_tokens = explode(':', get_include_path() );
// Aktuelle underkataloger
$dirs = array("classes","models","controllers");
foreach($include_path_tokens as $prefix){
if ($prefix==".")
continue;
foreach($dirs as $dir){
$path = $prefix . '/'.$dir.'/' . $class_name . '.php';
if(file_exists($path)){
require_once $path;
return;
}
}
}
}
Les mer om autoload i PHP-dokumentasjonen.
Ryddigere kode med php_include_path
Når php inkluderer en fil, leter den etter filen i alle kataloger angitt i php_include_path.
I .htaccess-fila kan du f.eks sette php_include_path slik:
php_value include_path "/app:/public:."
Her vil php lete etter filene i /app-katalogen, i /public-katalogen eller i lokal katalog (angitt av punktumet på slutten)
Dermed kan du enkelt skille applikasjonen din i flere deler.
En vanlig metode er å dele i to:
App-katalogen – Her ligger alle applikasjonsspesifikke filer som ikke skal være tilgjengelig på nettet
/app/
/app/config/
/app/classes/
/app/models/
etc.
Public-katalogen – Tilgjengeliggjøres på nettet, og alt som ligger her kan kjøres eller lastes ned.
/public/
/public/css/
/public/images/
etc.
F.eks vil følgende nå fungere overalt, også fra public-katalogen:
require ("config/database.php");
require ("classes/ReviewDAO.php");
include ("views/header.php");
om man bruker den tidligere angitte php_include_path.
Sette php_include_path
php_include_path kan settes i:
- php.ini
eks:include_path = ".:/usr/local/lib/php/pear:" - .htaccess
eks:php_value include_path ".:/usr/local/lib/php/pear:"
Zend Studio 5.2, treg med Subversion
De siste månedene har jeg opplevd stor treghet i Zend Studio 5.2, ved filnavigering og lukking av vinduer.
Subversion-integrasjonen viste seg å være problemkilden. Ved å bytte fra SVN til CVS (Tools->Preferences->Source Control), var problemet løst, og verktøyet tilbake til sitt snappy seg.
Ellers anbefales følgende for mest mulig effektiv Zend Studio:
- Skru av “OS look and feel” (Tools->Preferences->Desktop)
- Oppdater til nyeste JRE. NB! Jeg fikk problem med 1.6, så prøv gjerne siste 1.5-versjon.
Du kan laste ned å overskrive JRE-filene manuelt. Hos meg ligger de under /Zend/ZendStudio-5.2.0/jre/
Kan også være noen av disse probleme er adressert i Zend Studio 5.5. Personlig avventer jeg oppgradering, da verktøyet nå ruller knirkefint hos meg.
Uaktelt å skru av SVN-integrasjonen? Prøv TortoiseSVN, for nydelig SVN-integrasjon direkte i fil-exploreren!
PHP-sertifisering
Programmert PHP i mange år, uten bevis på dine kunnskaper? Da er kanskje PHP-sertifisering noe for deg.
Det finnes mange meninger om sertifiserings-testene, og de flinkeste programmererne er ofte de mest misfornøyde. En grunnleggende sertifisering tester nemlig ikke dine evner som programmerer, men hvor godt du behersker syntaksen, funksjonsbiblioteket og din kjennskap til alle språkets øvrige detaljer og finurligheter.
Derfor kan meget dyktige PHP-programmerere faktisk feile på eksamen, fordi de går i alle testenes feller. Dette betyr ikke at disse sertifiseringene er verdiløse, men at du faktisk kan trenge å lese og løse oppgaver, selv om du har programmert i mange år.
Hva kan du så forvente å lære av en slik test?
- Syntaksens og språkets detaljer
- Hva er riktig av $this->name; og $this->$name;
- Hva er forskjellen på echo og print
- Hva er forskjellen på == og ===
- etc.
- Funksjonsbiblioteket
- String-funksjonene
- Array-funksjonene
- Fil-funksjonene
- Dato-funksjoene
- etc.
- Mail-sending
- Regexp-støtten
- Nettverksprogrammering
- Grunnleggende SQL
- Sikkerthetsproblematikk
- etc.
Test deg selv
Zend har lagt ut en mini-test som gir et bilde av eksamensformen: PHP 4 Self Test PHP 5 Self Test
PHP 4-sertifisering
NB! PHP5-sertifisering vil snart avløse den nåværende PHP4-testen.
Personlig bruker jeg kun PHP 4, så for min del var dette det mest naturlig valget. PHP 4-sertifiseringen er fortsatt tilgjengelig, men være klar over at den plutselig kan bli tatt av plakaten.
Boken Zend PHP Certification Study Guide tar for seg PHP4, og gir en meget lettfattelig og fin gjennomgang av språket. Den er praktisk rettet og kan være nyttig for alle som har programmert PHP i mange år uten å ha gått i detalj. For meg var den en tankevekker på flere områder, spesielt array-håndteringen, mail-sending og nettverks-programmeringen.
Dessverre tar databasekapittelet kun for seg sql-syntaksen, og regexp kan umulig læres bort på noen få sider i en PHP-bok, så terskelen kan være vel høy.
En gjennomlesing av denne boken er ikke nødvendigvis nok til å bestå testen, og jeg anbefaler sterkt en øvelsesbok. The Zend PHP Certification Practice Test Book er liten, men gir en grei gjennomgang.
Påmelding
Sertifiseringen kjøper du direkte fra Zend, og selve testen utføres på et valgfritt testkontor.
Så da er det bare å kjøpe testen og melde deg opp til eksamen! Lykke til!
Live overvåkning – for ekstra inspirasjon
Kikker du daglig i dine loggfiler for å sjekke hvor mange brukere du har, hvor de kommer fra og hva de søkte etter?
Flott! Da vet du hvor mye nyttig informasjon en slik loggfil kan gi. Spesielt om den er knadd av et analyseverktøy a’la Analyzer eller Webalizer.
Men, har du prøvd å sette opp en live monitor? Ved å overvåke trafikken på ditt nettsted kontinuerlig får du et helt annen følelse for dine brukere. Da ser umiddelbart hvor de kommer fra, hvor de beveger seg (om du har ryddige URLer, hvilket absolutt er å anbefale), hva de søker etter (om søk-requests er satt opp med GET, hvilket også er å anbefale;) og alt annet de får av innfall på din side.
En live monitor lager du enkelt ved å for eksempel lagre alle brukernes bevegelser i en egen tekstfil.
Jeg bruker en enkel PHP-funksjon a’la :
// Appends info to access log
function logAccess() {
$time = date("Ymd H:i",time());
$ipAddress = $_SERVER['REMOTE_ADDR'];
$req = $_SERVER['REQUEST_URI'];
$referer = $_SERVER["HTTP_REFERER"];
$handle= fopen( PATH. "logs/access.txt",'a');
fputs($handle, "$time\t$ipAddress\t$req\t$referer\n");
fclose($handle);
}
som deretter kalles i koden med:
logAccess();
Har du unix-webhotell kan du deretter logge inn på serveren, gå til katalogen med access-filen og kjøre:
tail -f access.txt
Vips! Er det bare å hente en pose potetgull, lene seg tilbake og følge med på hva dine brukere finner på. Jeg garanterer at du lærer noe nytt etter få minutter!
Lag eget chatterom med Lace
På jakt etter et enkelt og velfungerende chattesystem til din egen server? Ta en titt på Lace!
Denne PHP-applikasjonen benytter Ajax-teknikken for oppdatering, lager validerende XHTML og inneholder ryddig og pen kode.
Sjekk også Chat Creator som bruker Lace til å lage egne gratis chatterom til alle sine brukere.
Jukselapper – nyttig og lærerikt
Her er jukselappene du skulle ønske du hadde på eksamen.
Selv etter mange års programmering, kan man fort gå glipp av nyttige triks og funksjoner. Skum gjennom disse lekre sammendragene, og se om du kjenner til alle språk og syntaksers mest nyttige finesser.
PHP-triks – fire måter å inkludere en fil
I php har du faktisk fire måter å inkludere script, og de har alle fiffige nyanser.
- include
Skriver ut en advarsel dersom filen ikke finnes, men scriptet fortsetter som normalt.
Fin å bruke når du inkluderer innhold som ikke er kritisk for siden.
Tips! For å ignorere advarselen kan du starte linjen med @.f.eks. @include(”filnavnet.txt”);
- include_once
Inkluderer filen kun dersom den ikke allerede er inkludert. Ellers identisk med include.
Vurder nøye når du bruker denne. Inkluderer du samme fil mange ganger, er kanskje tiden moden for litt opprydding i koden?
- require
Avslutter scriptet dersom filen ikke finnes.
Perfekt når du inkluderer kode eller andre script siden krever for å fungere. De fleste includes av php-kode passer her.
- require_once
Inkluderer filen kun dersom den ikke allerede er inkludert. Ellers identisk med require.
For å se hvilke filer som allerede er inkludert kan du også bruke get_included_files.
Installer PHP og MySQL på 10 minutter
Lyst til å teste ut PHP og MySQL, men ikke tid til å følge tunge installasjonsbeskrivelser?
Sjekk ut XAMPP!
En genial installasjonspakke med alt du trenger. Finnes til Windows, Linux, Mac OS X og Solaris. Så da er det bare å sette i gang å kode PHP. Lykke til!

