1 / 35

PHP osa 1

PHP osa 1. Verkkotekniikan jatkokurssi Kevät 2003 Ville Seppänen (rissepp@cc.jyu.fi). Sisältö. Yleistä Skriptien kirjoittaminen Muuttujista Operaattoreista Funktioiden määrittely ja käyttäminen include ja require Kontrollirakenteista Taulukoista. PHP:n käyttötilasto helmikuu 03.

feo
Download Presentation

PHP osa 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PHP osa 1 Verkkotekniikan jatkokurssi Kevät 2003 Ville Seppänen (rissepp@cc.jyu.fi)

  2. Sisältö • Yleistä • Skriptien kirjoittaminen • Muuttujista • Operaattoreista • Funktioiden määrittely ja käyttäminen • include ja require • Kontrollirakenteista • Taulukoista

  3. PHP:n käyttötilasto helmikuu 03

  4. Yleistä (1) • Alkoi 1994 yhden miehen, Rasmus Lerdorfin, projektina Personal Home Page • Nykyisin useita kehittäjiä, vapaa Open Source projekti, nimi muuttunut muotoon PHP Hypertext Preprocessor • Viimeisin versio 4.3.1 (www.php.net) • Kehityksessä oleva versio 5 tulee muuttamaan PHP:n enemmän oliokielen suuntaan

  5. Yleistä (2) • ‘Serverside HTML-embedded scripting language’ • PHP-skripti kirjoitetaan tavallisesti HTML-koodin sekaan • Asiakkaan pyytäessä skriptiä sisältävää dokumenttia palvelimelta, palvelin suorittaa dokumenttiin upotetun koodin • ja (tavallisesti) palauttaa vastauksena staattisen HTML-dokumentin • HTTP ja HTML asettavat tiettyjä rajoituksia • Suunniteltu web-käytöön • Paljon valmiita funktioita yleisiin käyttötarkoituksiin; esim. grafiikan ja PDF-dokumenttien generointi, sähköpostin lähettäminen, cookieiden käsittely, yhteydet muihin verkkopalveluihin ja erilaisiin tietokantoihin jne.

  6. Yleistä (3) • Syntaksi perustuu muihin ohjelmointikieliin, pääasiassa C:hen ja Perliin. Piirteitä myös C++:sta ja Javasta. Mahdollista kirjoittaa oliotyyliin. • Siirrettävää: koodi toimii ilman muutoksia tai pienin muutoksin (hakemistoviittaukset jne.) erilaisilla alustoilla (vapaat ja kaupalliset Unixit, Windowsit jne.) sekä lukuisissa WWW-palvelimissa laajennusmodulien avulla, esim. Apache ja MS IIS

  7. Yleistä (4) • Verrattaessa ‘kilpailijoihinsa’ (esim. Perl, ASP, JSP, Cold Fusion) PHP:n vahvuuksia ovat: • Suorituskyky • Liittymä useille tietokannoille • Sisäänrakennetut kirjastot yleisille web-sovelluksiin liittyville tehtäville • Edullinen ( ilmainen) • Helppo oppia ja käyttää • Siirrettävyys • Lähdekoodin saatavuus (Welling & Thomson, 2001) • Koodin pituus PHP:lla toteutettuna on tyypillisesti vain murto-osan esim. vastaavasta Perl-koodista

  8. Skriptin kirjoittaminen (1) • Palvelin tunnistaa PHP-skriptiä sisältävät tiedostot tiedostonimen päätteen perusteella, yleensä .php, .php3, .php4 tai .phtml (hyväksytyt päätteet riippuvat palvelimen asetuksista) • PHP-skriptit kirjoitetaan <? ?> tai <?php ?> merkkiparien sisälle (suosi jälkimmäistä muotoa)

  9. Skriptin kirjoittaminen (2) <html> <head> <title>Päiväys<title> </head> <body> <p> <?php // PHP-koodi alkaa echo “Tänään on: “; echo time(“d-m-Y”); ?> // PHP-koodi loppuu </p> </body> </html>

  10. Skriptin kirjoittaminen (3) <?php $myString = ‘Hello, world!’; ?> <h1> <?php echo $myString; ?> </h1> <?php $myString = ‘Hello, world!’; echo “<h1>$myString</h1>”; ?> <?php $myString = ‘Hello, world!’; echo “<h1>”.$myString.”</h1>”; ?> <?php echo “<h1 class=\”iso\”>Iso otsikko</h1>”; echo “<h1 class=‘iso’>Toinen iso otsikko</h1>”; ?> <for method=“get” action=“<?php echo $PHP_SELF ?>”>

  11. Skriptien kirjoittaminen (4) • PHP-sovellus voidaan kirjoittaa kokonaisuudessaan yhteen tiedostoon tai se voidaan pilkkoa loogisesti erillisiin skripteihin if($page==‘kirjoita’) { /* kirjoittamiseen liittyviä juttuja */ } else if($page==‘lue’) { /* lukemiseen liittyviä juttuja */ } else { /* jotain muuta */ } index.php kirjoita.php lue.php

  12. Muuttujista (1) • PHP:ssa muuttujia ei tarvitse julistaa. Muuttuja luodaan, kun sille asetetaan arvo, ja muuttujan tyyppi määräytyy automaattisesti arvon tyypin mukaan $myInterger = 1; $myString = “Hello, world!”; $myArray = array(“Hello”, “world!”); echo gettype($myInteger); // integer echo gettype($myString); // string echo gettype($myArray); // string

  13. Muuttujista (3) • Muuttujien arvoja voidaan välittää skripteille GET tai POST-kutsujen mukana • Muuttujien siirtäminen URLissa (GET-metodi) http://www.palvelin.net?sivu=etusivu&kieli=suomi muuttuja arvo • POST lähettää datan HTTP-kutsun mukana, mutta sitä ei siirretä osana URLia  Ei GETin fyysistä pituusrajoitusta ja mahdollistaa multipart/form-data enkoodauksen.

  14. Muuttujista (2) • PHP:n tietotyypit • Boolean (PHP4), kaksiarvoinen • Integer, kokonaisluku • Float, liukuluku • String, merkkijono • Array, taulukko • Object • Luokan ilmentymä oliokoodissa • Resource (PHP4) • Sisältää viittauksen ulkoiseen resurssiin. Resurssit luodaan ja niitä käsitellään määrätyillä funktioilla (esim. tietokantakyselyn suorittava funktio ja sen palauttama resurssimuuttuja)

  15. Vertailu- ja loogiset operaattorit • PHP:n vertailuoperaattorit: • == equals (sama arvo) • === identical (sama arvo ja sama tietotyyppi) • != not equal • <> not equal • < less than • > greater than • <= less than or equal to • >= greater than or equal to • PHP:n loogiset operaattorit: • ! NOT • && AND • | | OR

  16. Muita operaattoreita • Ternary operaattori Yleinen muoto: condition ? value if true : value if false Esim: $answer = ($color == “red” ? “Color is red” : “Color is not red”); • Error suppression operaattori $a = @(57/0); • Execution operaattori $out = ‘ls -la’; echo “<pre>”.$out.”</pre>”;

  17. Funktiot (1) • Funktioiden nimeäminen ja määrittely • Nimissä sallitaan kirjain- ja numeromerkit, sekä alaviiva • Nimi ei saa alkaa numerolla • Nimi ei saa olla varattu sana • Nimi ei saa olla valmiin funktion nimi // funktion määrittely function omaFunktio() { echo “Moro!”; } // funktion kutsu omaFunktio();

  18. Funktiot (2) • Esimerkkejä funktion kutsumisesta: omaFunktio(); // kutsutaan ilman parametreja omaFunktio(“iso”); // string-parametrilla omaFunktio(15.23); // float-parametrilla omaFunktio($muuttuja); // muuttujaparametrilla omaFunktio($muuttuja, “iso”); // muuuttuja- ja string-param. // funktio vaatii parametrin: function omaFunktio($koko) { echo “Koko on $koko.”; } omaFunktio(“iso”); // tulostaa: Koko on iso.

  19. Funktiot (3) • Parametreille voidaan antaa arvo funktion määrittelyssä. Tällöin niille ei funktiota kutsuttaessa vaadita arvoa. pakollinen optionaalinen function omaFunktio($muoto, $koko = “iso”) { echo “Muoto on $muoto ja koko on $koko.”; } omaFunktio(); // warning: missing argument omaFunktio(“soikea”); // Muoto on soikea ja koko on iso. omaFunktio(“soikea”, “pieni”); // Muoto on soikea ja koko on pieni.

  20. Funktiot (4) • Muuttujien vaikutusalue (scope) • Funktion sisällä määritellyt muuttujat ovat voimassa vain ko. funktion sisällä (local variables) • Funktion ulkopuolella määritellyt muuttujat eivät ole voimassa funktioiden sisällä (global variables) • Avainsana global pakottaa muuttujan globaaliksi, vaikka se määriteltäisiin funktion sisällä • include() ja require() eivät vaikuta muuttujan vaikutusalueeseen

  21. Funktiot (5), esim. vaikutusalueista function omaFunktio() { $muuttuja = “foo”; } echo $muuttuja; // ei tulostetta function omaFunktio() { echo “Funktion sisällä, \$muuttuja = “.$muuttuja.”<br />”; $muuttuja = “bar”; echo “Funktion sisällä, \$muuttuja = “.$muuttuja.”<br />”; } $muuttuja = “foo”; omaFunktio(); Echo “Funktion ulkopuolella, \$muuttuja = “.$muuttuja.”<br />”; Tuloste: Funktion sisällä, $muuttuja = Funktion sisällä, $muuttuja = bar Funktion ulkopuolella, $muuttuja = foo

  22. Funktiot (6) • Esimerkki globalin käytöstä: function omaFunktio() { global $muuttuja; $muuttuja = “foo”; echo “Funktion sisällä, \$muuttuja = “.$muuttuja.”<br />”; } omaFunktio(); echo “Funktion ulkopuolella, \$muuttuja = “.$muuttuja.”<br />”; Tuloste: Funktion sisällä, $muuttuja = foo Funktion ulkopuolella, $muuttuja = foo

  23. Funktiot (7) • Muuttuja voidaan välittää funktiolle käyttämällä sen arvoa (pass by value) tai viittausta alkuperäiseen muuttujaan (pass by reference) • Pass by value:ta käytettäessä muuttujan globaali arvo ei muutu: • Pass by referencen käyttö määritellään kirjoittamalla parametrin eteen &-merkki: function kertaa10(&$luku) { $luku = ($luku * 10); } $luku = 10; kertaa10($luku); echo $luku; // tuloste 100 function kertaa10($luku) { $luku = ($luku * 10); } $luku = 10; kertaa10($luku); echo $luku; // tulostaa 10

  24. Funktiot (8) • Arvojen palauttaminen • Avainsana return lopettaa funktion suorittamisen ja ohjelman suorittamista jatketaan funktion kutsua seuraavasta lauseesta • returnia voidaan käyttää myös arvojen palauttamiseen funktiosta. function random($min = 1, $max = 100) { $random = rand($min, $max); return($random); } $satunnainen = random(); $iso_satunnainen = random(1000, 10000); function taustaVari($rivinumero) { if(($rivinumero % 2) == 0) return(“silver”); else return(“gray”); } • Ehdollinen arvon palauttaminen:

  25. include ja require (1) • includen käyttö helpottaa koodin hallintaa, jäsentämistä ja vähentää redundanssia • Usein tarvittavat koodinpätkät (esim. tietokantayhteyden muodostaminen) • Kirjastot • Teksti ja HTML-koodi (esim. heading, footer, layout, …) • require toimii includen tavoin, mutta liitettävän tiedoston puuttuminen keskeyttää koodin suorituksen, kun taas include ainoastaan tulostaa varoituksen

  26. include ja require (2) • require_once toimii requiren tavoin, mutta liittäminen tehdään ainoastaan mikäli sitä ei ole aiemmin tehty. <?php // avaataan tietokantayhteys - db.inc $db = mysql_connect(“localhost”, “sqluser”, “sqlpassword”); if(!$db) echo “Cannot connect to database”; else mysql_select_db(“mydb”); ?> <?php include(“./includes/db.inc”); ?>

  27. include ja require (3) • Jos liitettävä tiedosto sisältää PHP-koodia, koodi tulee kirjoittaa PHP-tagien sisälle. Muutoin koodia ei suoritetaan vaan se liitetään mukaan tekstinä. • Liitettäviä tiedostoja nimettäessä tulee käyttää ainoastaan loppupäätteitä, jotka WWW-palvelin käsittelee PHP-skripteinä. Muutoin tiedoston sisältö esitetään selaimessa tekstinä.

  28. Kontrollirakenteista (1) • if, else if ja else • Jos if-ehto on tosi, sitä seuraava koodi(blokki) suoritetaan • Muussa tapauksessa, jos else if-ehto on tosi, sitä seuraava koodi(blokki) suoritetaan • Muussa tapauksessa, else:ä seuraava koodi(blokki) suoritetaan if($i == 10) { echo “\$i on 10”; } else if($i == 5) { echo “\$i on 5”; } else { echo “\i$ on jotain muuta kuin 5 tai 10”; }

  29. Kontrollirakenteista (2) • Ehtovertailuesimerkkejä: if($i < 10 || $i > 20) // OR if($a == TRUE && $b == FALSE) // AND if(!$login) // NOT if(!isset($login)) // NOT • switch ja case: switch($i) { case “10” : echo “\$i on 10”; break; case “5” : echo “\$i on 5”; break; }

  30. Kontrollirakenteista (3) • while ja do while while ($i <= 10) { echo “$i <br />”; $i++; } /* --------------------------- */ $i = 11; do { echo “$i <br />”; $i+ } while ($i <= 10); • do while-rakenteessa ehto tarkistetaan lopussa, joten silmukka suoritetaan aina vähintään kerran

  31. Kontrollirakenteista (4) • for // testataan ehtoa $i <= 10. Kun epätosi, suorittaminen loppuu for($i = 1; $i <= 10; $i++) { echo “$i <br />”; } • Kontrollirakenteiden suorittaminen voidaan lopettaa milloin vain exit:llä • Lisää: http://www.php.net/manual/en/control-structures.php

  32. Taulukot [array] (1) • Yksi tai useampi ulotteinen joukko tunniste (index tai key) – arvo (value) -pareja • Tunniste voi olla joko kokonaisluku tai merkkijono • Arvo voi olla mikä tahansa, myös toinen array (moniuloitteiset taulukot) • Demojen puitteissa taulukoihin törmätään ainakin lomakkeita ja tietokantakyselyn tuloksia käsiteltäessä

  33. Taulukot (2) <form action="kasittelija.php" method="get"><br />Nimi: <input type="text" name="nimi" size="30” /><br />Email: <input type="text" name="email" size="30” /><br />Viesti: <textarea name="viesti" rows="3" cols="25”/></textarea><br /><input type="submit" name="submit" value="L&auml;het&auml;” /></form> Viittaaminen yksittäiseenelementtiin: $_GET[nimi]; print_r($_GET); // kasittelija.php Tuloste: $_GET-muuttujan (array) sisältö Array( [nimi] => Santa Claus [email] => joulupukki@korvatunturi.fi [viesti] => Hyvää joulua! [submit] => Lähetä )

  34. Taulukot (3) • Taulukon muodostaminen: $myArray = array(“Santa”, “Ho ho ho!”); // tunnisteet asetetaan automaattisesti kokonaislukuina nollasta alkaen $myArray = array(nimi => “Santa”, viesti => “Ho ho ho!”); // tunnisteet $myArray[nimi] ja $myArray[viesti] • Suoraan arvot asettamalla: $myArray[0] = “Santa”; $myArray[1] = “Ho ho ho!”; $myArray[nimi] = “Santa”; $myArray[viesti] = “Ho ho ho!”;

  35. Taulukot (4) • Taulukoiden käsitteleminen • Numeeriset tunnisteet mahdollistavat taulukon käsittelemisen esim. for-silmukassa for($i = 0; $i < count($myArray)-1; $i++) echo “$myArray[$i]<br />”; • list ja each while (list($tunniste, $arvo) = each($myArray)) echo “$tunniste - $arvo <br />”; • foreach foreach($myArray as $tunniste => $arvo) echo “$tunniste - $arvo <br />”; • Lue lisää: http://www.php.net/manual/en/ref.array.php

More Related