Lär dig PHP

LinuxWiki.se

Hoppa till: navigering, sök
Bild:Dialog-warning.pngDen här artikeln är under utveckling. Hjälp gärna till, diskussioner förs på Diskussionssidan


Innehåll

[redigera] En introduktion

Tanken med denna guide/tutorial eller vad du önskar kalla det är att du skall kunna lära dig hantera verktyget PHP för att skapa dynmiska hemsidor. Denna guide lär inte ut hur du skapar en gästbok, forum eller vad du önskar. Bara verktygen för att tillverka det du önskar.

[redigera] Förkunskaper

Denna guide förutsätter inga programmeringskunskaper. Dock måste du kunna lite (X)HTML då PHP i stor grad används för att skapa hemsidor. Att kunna arbeta med filer är ett måste. Lite terminal-erfarenhet är också bra om du har. För övrigt så är det bara glatt humör och viljestyrka som behövs ;)

[redigera] Vad är PHP?

Namnet PHP är rekursiv akronym för PHP Hypertext Preprocessor. Det innebär att första delen av ordet upprepas i förkortningen. Namnet säger mycket om vad PHP är. Det är någon process som förbereder Hypertexten, dvs den text som skickas via internet via HTTP-protokollet. Allså det du läser in i din webbläsare.

PHP är ett skiptspråk. Med det menas att menas att programmet kompileras varje gång du kör skripet. Om du har skiptet på en webbsida körs det varenda gång någon går till sidan. Termen kompilera är kanske inte känd för alla. Med kompilation menas att man gör om det språket programmeraren skriver till maskinkod som operativsystemet kan köra.

[redigera] När behöver jag använda PHP?

[redigera] En kort historia om PHP

[redigera] Installara en LAMP-miljö

[redigera] Installera från källkodspaket

Att installera Lamp från källkod, För att börja installera LAMP Så Behöver man Linux, Apache, MySQL, samt PHP, och fram för allt tid och här är det så att står teknet $ (Dollar) framför komadot så kan du köra som user, men står # (Brädgård) så får du köra som root..


Nr 1 Börja med ett Linux system som har XML stöd develop + python XSLT stöd develop + python

Nr 2 sedan Databaser MySQL packa upp det i /usr/local/src och kör komandona $./configure $make

  1. make install

sedan kommer det lite kruxiga Packa upp filerna med Apache och PHP jämte varandra så de syns från samma ursprungskatalog typ /usr/local/src/PHP5 /usr/local/src/Apache2

Nr 3 tar xvfz httpd-2.0.xx.tar.gz

  1. Konfigurera apachen

cd httpd-2.0.xx ,$./configure --libexecdir=/usr/lib/httpd/modules --enable-mods-shared=all

//(Obs kan ses som en viss säkerhetsbrist att köra shared=all där gör du ett eget val)

Nr 4 tar xvfz php-5.x.x.tar.gz cd php-5.x.x $./configure --with-mysql=/usr --with-apxs2

// ("configure --with" med dessa kan man välja om man vill ha stöd för annan programvara som sqlite --with-sqlite kolla att din aspx2 verkligen heter aspx2 och inte bara aspx)

$cd..

gå nu in i katalogen Apache2 cd /Apache2 och kör $make

  1. make install

cd .. gå in i katalogen PHP5 cd /php-5.x.x kör $ make

  1. make install

gå tillbaka komandot cd.. Nr 5 libtool --finish /usr/local/src/php-5.x.x/libs /usr/local/src/php-5.x.x/libs

Sedan får du börja "Tukta" Konfigurera din Apache.conf/httpd.conf samt ändra din php.ini och php.conf filer för att de ska stämma med ditt system..

[redigera] Installera i Ubuntu

[redigera] Börja koda

[redigera] Ett första exempel

Vi börjar med Hej världen! som exempel på hur PHP kan se ut.

<?php
  echo "<h1>Hej världen</h1>";
?>

Skriv det där i en fil och spara den som varlden.php. Öppna filen med en webbläsare och se..

PHP kan du köra från kommandoraden också, då skriver du så här vid din prompt:

php varlden.php

och ut kommer <h1>Hej världen</h1>. <h1> är HTML och gör texten som en rubrik, det fungerar inte i en terminal och därför visas <h1> och </h1>. Du kan också skriva så här:

php -r 'echo "Hej världen";'

För att skriva ut Hej världen. Många vägar för att nå till PHP. Ett bra sätt att se om du har stöd för en viss sak i PHP (i din konfiguration) är att skapa ett dokument som ser ut så här:

<?php
 phpinfo();
?>

Surfa in till det dokumentet och titta vad du har för konfiguration av PHP.

[redigera] Grundläggande syntax för PHP

PHP:s syntax är väldigt lik C/C++ och Java (och än mer Perl) i framförallt det generella användandet av parenteser, block etc. Den kanske mest uppenbara skillnaden, och den man ser oftast, är vid namngivning av variabler. I C/C++/Java ser en variabel ut precis som vilket annat ord som helst, medan i PHP (likt Perl) identifieras variabler med dollartecknet, $.

[redigera] Variabler

[redigera] Vad är en variabel?

Variabler används väldigt mycket i PHP och de flesta andra programmeringsspråken också. Det är ett ord, en bokstav som tilldelas ett värde. Detta värde kan ändra sig under tiden programmet körs. Värdet kan variera.

<?php
$hej = 1;
$du = 2;
$hej = $hej + $du;

print $hej." ".$du;
?>

Vad kommer att skrivas ut genom ovanstående exempel? "3 2" är svaret. Det är nämligen så att $hej byter värde från 1 till 3 på den fjärde raden i koden. Om du har kodat i andra språk förut kanske du är bekant med olika variabeltyper som interger och string. PHP är ett typlöst språk vilket innebär att du kan sätta variablerna till vilket värde du vill. Dessutom måste du inte deklarera variablerna du tänker använda.

[redigera] Olika variabeltyper

[redigera] Stränghantering

[redigera] Grunder

En av fördelarna med ett identifieringstecken ($variabel istället för variabel) är att man enkelt kan inkludera variabler i strängar. Studera skillnaden mellan dessa kodexempel för att se fördelarna.

C++:

string name = "Tim";
cout << "Hejsan, " << "name" << endl;


PHP:

$name = "Tim";
echo "Hejsan, $name";


Båda exempel producerar resultatet "Hejsan, Tim". Som du märker så kan vi alltså inkludera variabler direkt i klartext inuti PHP. Denna effekt ändras dock om man använder enkelcitationstecken, då behandlas nämligen dollartecknet som ett riktigt tecken. Exempel:

$name = "Tim";
echo "Hejsan, $name"; // Ger "Hejsan, Tim"
echo 'Hejsan, $name'; // Ger "Hejsan $name"
echo "Hejsan, \$name"; // Ger "Hejsan $name"


[redigera] Strängutskrift och strängkombinering

Som vi redan har snuddat på så finns det olika sätt att skriva ut strängar. Återigen kan vi titta på ett par exempel, samtliga av dessa exempel kommer att generera samma resultat (återigen "Hejsan, Tim"). Vi förutsätter att variabeln $name fortfarande är satt till "Tim".

echo "Hejsan, $name";
echo "Hejsan, " . $name;


En punkt är det vanligaste sättet att slå samman strängar. I det föregående exemplet skrev vi ut resultatet direkt, men vi kan lika väl ange det värdet i en ny variabel:

$hello = "Hejsan, " . $name;
echo $hello;

[redigera] Systemvariabler

[redigera] Konstanta variabler

[redigera] Operatorer

[redigera] Vad är en operator?

Operatorer är vanliga i flera sammanhang. Vi hittar dem till exempel i matematiken och i programmeringen. Här är några vanliga operatorer i matematiken:

  • +
  • -
  • *
  • /

Hur man använder dessa är de flesta bekanta med. Vi skall vrida och vända lite på operatorn +.

1 + 2

Operatorn tar ett värde till vänster och (i det här fallet) adderar med värdet till höger. Just denna operator returnerar samma svar oavsett om vi tar

1 + 2

eller

2 + 1

Men det gäller inte alla operatorer. Tänk till exempel på operatorn -. Den gör skillnad på

1 - 2

och

2 - 1

Nåväl. Nu har vi ett någorlunda grepp om vad en operator är och hur man använder den. Vissa programmeringsspråk tillåter dig att skapa egna operatorer. Då är denna kunskap ännu viktigare. Men i PHP har vi inte det intresset. Nu skall vi testa att använda operatorer i PHP.

[redigera] Räkna med PHP

[redigera] Jämförande operatorer

[redigera] Villkorssatser

[redigera] Bli snurrig

[redigera] For-loop

[redigera] While-loop

[redigera] Arrayer

En array är mycket användbart i alla former av programmering, och PHP tillhandahåller givetvis en väldigt bra implementering.

[redigera] Vad är en array?

En array är mer eller mindre en lista av olika variabler. Istället för att spara variablerna $namn1, $namn2, $namn3 så kan vi helt enkelt spara de i en lista, $namn = array("1", "2", "3");

I PHP kan en array innehålla olika datatyper, d.v.s. vi kan blanda både siffror och tecken i stort sett hur vi än vill.

[redigera] Grundläggande hantering av arrayer

För att initiera en array använder vi arrayanropet:

$minlista = array();


Vi har nu skapat en tom lista vid namn $minlista. Om vi vill kan vi stoppa in värden i den redan när vi skapar den:

$minlista = array(1, 2, 3, 4, 5);


Som bekant hanteras siffror utan citationstecken som nummer och inom citationstecken som strängar.

För att komma åt dessa värden använder vi oss av ett index. PHP låter oss ange våra index hur vi än vill eller låta programmet ta hand om det själv. När PHP själv indexerar en array så kommer den att starta med position 0, precis som de flesta språk. Detta betyder att i $minlista från tidigare så är position 0 = 1. För att anropa en position använder vi oss av []-tecknen:

$minlista = array(1, 2, 3, 4, 5);
echo $minlista[0]; // Ger 1
echo $minlista[1]; // Ger 2
echo $minlista[2]; // Ger 3


Vi kan även hantera dessa värden precis som vi skulle med vanliga variabler:

echo ($minlista[0] + $minlista[3]); // Ger 5 (1 + 4)


Om vi själva vill indexera vår lista får vi namnge positionerna med hjälp av =>-anropet. Tänk dig att vi vill skapa en lista med information om en person. Vi vill spara namn, kön och ålder.

$person = array(
   "namn" => "Eva",
   "kon" => "Kvinna",
   "alder" => 30
);


I detta exempel delade vi upp anropet på flera rader, det hade gått precis lika bra att skriva $person = array("namn" => "Eva", "kon" => "Kvinna", "alder" => 30);


Om vi sedan vill mata ut information om denna person kan vi enkelt anropa listan:

echo "Namn: {$person['namn']}\nKön: {$person['kon']}\nÅlder: {$person['alder']}


Märk väl att vi använder {}-taggar runt variabelnamnen när vi inkluderar dem direkt i en sträng. Detta för att annars kommer inte PHP att hantera vår array som en variabel.

[redigera] Olika trix med arrayer

Vi fortsätter med det tidigare exemplet på en lista på en person, men nu vill vi lista flera personer och sedan mata ut den information, men utmatningen skall ske helt dynamiskt, d.v.s. oavsett den mängd data vi har ska allt matas ut och formateras.

För att enkelt spara en lista över fler personer i vår array så utökar vi den till en flerdimensionel lista. Vår struktur kommer att se ut såhär:

Index Namn Kön Ålder
0 Eva Kvinna 30
1 Peter Man 25

(osv)


Vi kan bygga den här variabeln på bl.a. det här viset:

$personer = array();

$personer[0]['namn'] = "Eva";
$personer[0]['kon'] = "Kvinna";
$personer[0]['alder'] = 30;
$personer[1]['namn'] = "Peter";
$personer[1]['kon'] = "Man";
$personer[1]['alder'] = 25;
$personer[2]['namn'] = "Maria";
$personer[2]['kon'] = "Kvinna";
$personer[2]['alder'] = 15;


För att sedan enkelt mata ut denna information kan vi använda en foreach-loop:

foreach ($personer as $person) {

    echo "Namn: {$person['namn']}\n";
    echo "Kön: {$person['kon']}\n";
    echo "Ålder: {$person['alder']}\n";
    echo "\n\n";
}


Detta exempel ger då:

Namn: Eva
Kön: Kvinna
Ålder: 30


Namn: Peter
Kön: Man
Ålder: 25


Namn: Maria
Kön: Kvinna
Ålder: 15

[redigera] Filhantering

[redigera] Jobba mot MySQL-databaser

Att använda MySQL-databaser i PHP är mycket enkelt. Du skapar anslutningen med mysql_connect() och ställer frågor med mysql_query(). När du ställt en fråga vill du ofta fånga upp svaret, det kan du göra med mysql_fetch_array(). Vi tittar på ett enkelt exempel:

$db = mysql_connect("minServer", "användare", "lösenord");
$query = mysql_query("SELECT * FROM tabellen");
$data = mysql_fetch_array($query);

mysql_connect() tar alltså tre argument: vilken dator som kör MySQL-servern (den behöver inte ligga på samma som du kör PHP från), ett användarnamn (som du skapat i MySQL) och tillhörande lösenord. $db använder vi för att få ett handtag till den här anslutningen. Den kommer att avslutas när du kör mysql_close($db) eller PHP-skriptet är klart. mysql_query() använder vi för att köra frågor i MySQL. I exemplet ovan kör vi frågan SELECT * FROM tabellen som kommer att hämta alla poster från tabellen tabellen, vi sparar undan resultatet i variabeln $query. För att kunna använda resultatet från mysql_query() använder vi mysql_fetch_array(). Nu skulle vi kunna skriva ut värdet i en specifik kolumn i tabellen genom att skriva:

echo "Värdet är: ".$data['namn'];

om vi har fältet namn i vår tabell. Det var väl inte så svårt? Ok, vi har ett problem. mysql_fetch_array() hämtar bara den första posten, vill vi hämta den andre posten får vi köra mysql_fetch_array() igen och igen och igen.. Det brukar vi lösa med en while-sats:

while($data = mysql_fetch_array($query))
{
  echo $data['namn'];
}

Med while-satsen kommer PHP att gå igenom varenda post och skriva ut alla namn som finns lagrade i tabellen.

[redigera] Objektorienterad programmering

Redan i PHP4 fanns begreppen "objekt" och "klass" i PHP, men föga är PHP4 ett objektorienterat språk. En klass i PHP4 är snarare en avancerad namnrymd som grupperar ihop metoder och tillåter arv mellan klasserna. Objekten bär data utan att för den skull kapsla in det.

I PHP5 är stödet för objektorienterad programmering helt omskrivet och stöd finns för alla fundamentala begrepp.

[redigera] Konstruktör och destruktör

I PHP4 skapas en konstruktör genom att namnge en metod i klassen vid samma namn som klassen självt, t ex:

   class TestKlass {
       // Detta är konstruktören
       function TestKlass() {
       }
   }

i PHP4 saknas begreppet destruktör helt.

I PHP5 finns två reserverade metodnamn för konstruktör och destruktör, nämligen __construct() och __destruc(). Nedan följer ett exempel:

   class TestKlass {
       // Detta är konstruktören
       function __construct() {
       }
       // Detta är destruktören
       function __destruct() {
       }
   }

Värt att notera kan vara att: 1) en konstruktör kan ta parametrar, medan en destruktör inte kan det (vilket bör te sig logiskt), 2) när under exekveringen av PHP-scriptet som destruktören kommer att köras kan vara svårt att förutse (det sker nämligen först när alla referenser till objektet är borta eller när objektet explicit har "förstörts").

[redigera] Metoder

[redigera] Päron

Den här artikeln är hämtad från http://wiki.linuxportalen.se/index.php/L%C3%A4r_dig_PHP
Personliga verktyg