Saa skal jeg vel bare for sjov angive grunde til ikke at bruge Php.
Foerst: Der er egentlig to forskellige sprog, nemlig php4 og php5. Og selvom de
paa en maade en ens, saa er der stadig saa mange forskelle at man ikke bare
kan tage sit php4 program, og koere med php5. Eller lad mig quote fra manualen:
In PHP 5 there is a new Object Model. PHP's handling of objects has been completely rewritten, allowing for better performance and more features.
Saa hint1: Hvis du beslutter dig for at bruge php, saa brug Php5. Der var en grund til at de smed deres object model vaek, og lavede en helt ny til php5 :}
Og her er egentlig et godt eksempel paa problemet med php. Det er ikke designet som et egentlig sprog, men naermere bare en masse features og syntax
der kan bruges sammen. Php er resultatet af agile development brugt paa et programerings sprog, og det er ikke koent.
Eksempel: Vil du hente en enkelt raekke fra en mysql database, kan du passende bruge
mysql_connect til at connecte, saa mysql_query til at sende en query, og saa mysql_result til at hente et enkelt felt fra resultatet.
Vil du goere det samme med postgresql skal du bruge
pg_connect til at connecte til database, saa pg_query til at sende en query, og nu tror du nok du kan bruge pg_result MEN NEJ for den metode
findes ikke.
Og lad mig tale lidt om hvordan man escaper strenge til sql*. Foerst var der addslashes() og den var ikke god. Saa de lavede en
mysql_escape_string som escaper stringe til mysql. Men paa grund af deres agile development, havde de ikke lige overvejet hvad de egentlig
havde brug for, saa de lavede mysql_real_escape_string. Og den virker. Hvis man saa vil escape sin string til en postgresql database, skal
man naturligvis bruge pg_escape_string i stedet. Men brug aldrig mysql_escape_string for den virker ikke. Forviret?
Og typerne. Nu har jeg jo aldrig vaeret glad for sprog med saa loese typer som php. Eksempel (Man bruger $ til at angive variable navne)
$a=47; // a er en integer.
$b="1hello"; // b er en streng.
$c=$a + $b; // Hvad tror du vaerdien og typen af $c er? Svar: $c er en integer med vaerdien 48.
Og == kan godt sammenligne ting af forskellige typer, saa ( ("1hello" + 47)==48) er true.
Hvis du ogsaa vil sammenligne typer saa brug ===
("1hello" + 47)===48) er altsaa false.
Og hvis du vil have fancy ting saa som utf8 support, saa skal du endelig huske at compile php med --enable-mbstring ellers er du fucked. (Og stakkels
dig hvis du bruger en precompiled version af php, for de kommer normalt aldrig compiled med --enable-mbstring)
Og mbstring er ikke specielt smart paa nogle som helst maade, men bare rolig de er ved at lave en ny unicode extension i stedet for mbstring.
http://dk2.php.net/manual/en/ref.unicode.php (Agile development naar det er bedst :}
Og hvis du vil connecte til en smtp mail server som ikke koere paa samme maskine, saa pas endelig paa hvilken os du koere paa. Under windows
kan php nemlig GODT finde ud af at connecte til smtp servere, som ikke koere lokalt. Men under linux/unix vil den KUN sende mails via en
smtp server som koere paa samme maskine. (MEGET BELASTENDE!!!!!)
*Jeg syntes jo stadig der er noget slam at bygge sql paa den maade. Brug ALTID prepared statements. Selv hvis du kun skal lave
en enkelt query :}
Med venlig hilsen Martin T, som har koded saa meget php, at han ved hvorfor man ikke boer bruge det paa store sites.
pps: Jeg soeger stadig et studiejob(Laeser datalogi), saa hvis nogle staar og skal have hjaelp med at faa deres php site lavet saa skriv lige en besked.
ppps: Jeg mener stadig man kalder det ajax, selv naar serverens svar ikke er i xml. Lidt ligesom SOAP er det en af de forkortelser der har aendret betydning efter brug.
Med venlig hilsen Martin Tilsted.