PHP
|
|
|
|---|---|
| Paradigma | olio, proseduraalinen |
| Tyypitys | heikko |
| Muistinhallinta | automaattinen |
| Julkaistu | 1995 |
| Kehittäjä | The PHP Group |
| Vakaa versio | 5.4.5 (19. heinäkuuta 2012) |
| Vaikutteet | C, Perl |
| Verkkosivu | http://www.php.net |
| Uutisryhmä | comp.lang.php |
PHP (lyhenne sanoista PHP: Hypertext Preprocessor) on Perlin kaltainen ohjelmointikieli, jota käytetään erityisesti Web-palvelinympäristöissä dynaamisten web-sivujen luonnissa.[1] Ohjelmointikielen lisäksi PHP-ympäristössä on laaja luokkakirjasto. PHP on komentosarjakieli, jossa ohjelmakoodi tulkitaan vasta ohjelman suoritusvaiheessa. PHP:tä voidaan käyttää useilla eri alustoilla ja käyttöjärjestelmillä.
PHP:n ensimmäinen versio julkaistiin vuonna 1995, ja nykyisin PHP on vertailuissa johtava dynaamisten web-palveluiden tuottamiseen tarkoitettu kieli.[2] [3]
Sisällysluettelo |
Historia [muokkaa]
Vuonna 1994 tanskalais-grönlantilainen Rasmus Lerdorf kirjoitti pienen kokoelman C-kielisiä CGI-skriptejä[4] nimellä Personal Home Page Tools. Lerdorf julkisti työkalut GPL-lisenssillä 8. kesäkuuta 1995 nimellä PHP/FI (Personal Home Page / Forms Interpreter). [5]
PHP/FI 2.0 julkaistiin marraskuussa 1997 ja sillä oli useita tuhansia käyttäjiä ympäri maailmaa. Ohjelma oli asennettu noin 50 000:een domainiin (1 % kaikista Internetin domaineista) ja useat ihmiset osallistuivat sen kehittämiseen. Projekti oli yhä Rasmus Lerdorfin päävastuulla.
Andi Gutmans ja Zeev Suraski totesivat PHP/FI 2.0:n riittämättömäksi Internet-kauppasovelluksen tarpeisiin. He kirjoittivat lähes koko lähdekoodin alusta asti uudelleen ja julkaisivat sen kesäkuussa 1998 nimellä PHP 3. Lyhenteen uudeksi merkitykseksi valittiin rekursiivinen PHP: Hypertext Preprocessor.
Talvella 1998 Gutmans ja Suraski aloittivat PHP:n ytimen uudelleen kirjoittamisen. Heidän tavoitteenaan oli ydin, joka tukisi kolmansien osapuolten ohjelmointirajapintoja. Uusi ydin julkaistiin vuonna 1999 nimellä Zend Engine (yhdistelmä nimistä Zeev ja Andi) ja maaliskuussa 2000 julkaistu PHP 4 käyttää sitä ytimenään.[6]
PHP 5 julkaistiin heinäkuussa 2004. Sen ytimenä on Zend Engine II, joka muun muassa tukee olio-ohjelmointia ja sisältää sisäänrakennetun tietokantamoottorin (SQLite). Uusin versio (PHP 5.3.3) julkaistiin 22. heinäkuuta 2010.[7] PHP 4:n virallinen tuki päättyi 8. elokuuta 2008.[8][9]
Syntaksi [muokkaa]
PHP:tä käytetään yleisimmin upotettuna HTML-sivujen sisälle. PHP-koodin aloitus- ja lopetustagit ovat <?php ja ?>.:[10]
<html> <head> <title>PHP-testi</title> </head> <body> <?php echo '<p>Hei maailma!</p>'; ?> </body> </html>
Kun sivujen käyttäjän selain lähettää pyynnön yllä olevasta sivusta, palvelin käyttää koodin PHP-tulkille. Tulkki ei käsittele mitään tekstiä, joka on aloitus- ja lopetustagien ulkopuolella. Se palauttaa valmiin sivun palvelimelle, joka lähettää sen edelleen selaimelle:[10]
<html> <head> <title>PHP-testi</title> </head> <body> <p>Hei maailma!</p> </body> </html>
Koodiesimerkkejä [muokkaa]
PHP-koodin tulostuksen kuolettaminen:
<?php die(); ?>
Tekstin tulostaminen PHP-kielellä:
<?php echo ('Huomenta Wikipedistit!'); ?>
(Sulut eivät ole pakolliset medodissa echo, print, include, require ja return.)
Tiedoston lukeminen PHP:llä:
<?php $file=fopen("tiedosto.txt", "r"); $content=fgets($file); fclose($file); ?>
Tiedostoon kirjoittaminen PHP:llä:
<?php $file=fopen("tiedosto.txt", "r"); $content=fgets($file); fclose($file); ?>
Ehtolauseet PHP:ssä:
<?php if($a<$b) { $a++ ?> <p>A=B</p> <?php } ?>
Muuttujat [muokkaa]
PHP:n muuttujat ovat heikosti tyypitettyjä, eli ne voivat saada minkä tahansa tyyppisen arvon riippuen kontekstista. Muuttujatyyppejä ovat totuusarvo (boolean), kokonaisluku (integer(int)), liukuluku (float(double)), merkkijono (string), taulukko tai matriisi (array), olio (object), ulkoinen resurssi (resource) ja tyhjä (NULL).[11]
Muuttujat merkitään dollarimerkillä $ nimen alussa. Muuttujat voivat sisältää kirjaimia a-z, numeroita tai alaviivoja. Muuttujan nimi ei saa alkaa numerolla. [12]
Oliot [muokkaa]
PHP 4:ssa oli perustoiminnot luokkien ja olioiden käsittelyyn, mutta toiminto kirjoitettiin täysin uusiksi PHP 5:een. PHP 5:n olio-ominaisuuksissa on muun muassa julkisia (public), yksityisiä (private) ja suojattuja (protected) muuttujia ja funktioita, abstrakteja luokkia ja funktioita, luokkien periytyminen ja poikkeusten käsittely.
Olion julkisia muuttujia voi lukea ja kirjoittaa vapaasti mikätahansa ohjelman osa ja julkisia metodeja voi kutsua mistä tahansa ohjolman osasta. Yksityisiä metodeja voidatan lukea ja kirjoittaa vain luokan metodeista ja yksityisiä metodeja voi kutsua vain luokan metodit. Suojatut metodit ja muuttujat ovat julkisia alaluokille ja yksityisiä kaikille muille ohjelman osille. Luokka viittaa itseensä avainsanalla this.
Esimerkki:
<?php class piste { private int $x; private int $y; //Metodi joka ajetan kun luokkalle tehdään ilmentymä. public function piste() { this->$x=1; this->$y=1; } public function set($x, $y) { this->$x=$x; this->$y=$y; } public function getx() { return this->$x; } public function gety() { return this->$y; } } class piste_a = new piste(); //Tekee luokalle piste ilmentymän piste_a piste_a->set(10, 40); //Asettaa ilmentymän piste_a arvoiksi $x=10 ja $y=40 echo "Luokan piste_a X="piste_a->getx()." ja Y=".piste_a->gety(); ?>
Abstraktilla luokalla on abstrakteja metodeja, jotka ovat tyhjiä. Abstraktia luokkaa voidaan käyttää jos halutaan paljon luokkia, mutta halutaan että ne ovat saman luoka alaluokkia ja että niissä on samannimiset metodit ja muuttujat. Abstraktille metodille tosin voi luoda alaluokkia ja niissä metodit voi määrittää.
Esimerkki:
<?php abstract class verotus { protected int $alv; protected int $kansa; public verotus($alv) { this->$alv=$alv; this->$kansa=1000; } public function get() { echo "ALV: ".this->$alv."<br>"; echo "Väkiluku: ".this->$kansa; } public abstract function set(); } public class kansa-poistuu extends verotus { public function set() { verotus->$alv++; verotus->$kansa--; verotus->get(); } } for($i=0; $i<150; $i++) { verotus->kansa-poistuu->set(); } ?>
Luokkakirjastot [muokkaa]
-
Pääartikkeli: PHP:n luokkakirjastot
PHP:ssä on laaja luokkakirjasto. Luokkakirjastoja on useille eri toiminta-alueille kuten merkkijonojen ja päivämäärien käsittelyyn, HTTP-protokollalle, useiden eri tiedostotyyppien muokkaukseen ja ulkoisille tietokannoille. PHP on tukenut versiosta 3 lähtien kolmansien osapuolien ohjelmointirajapintoja.
Tietokantakohtaiset luokkakirjastot [muokkaa]
PHP:ssa on tietokantatuki muun muassa MySQL, PostgreSQL, SQLite ja Oracle-tietokannoille. ODBC-luokkakirjastossa on yhtenäinen rajapinnan muun muassa Adabas D, IBM DB2, iODBC, Solid, ja Sybase SQL Anywhere -tietokantoihin.
Kritiikkiä [muokkaa]
PHP:ta on kritisoitu muun muassa seuraavista asioista:
- Vanhemmissa versioissa oli oletusarvoisesti päällä toiminto, jolla loppukäyttäjät pystyivät syöttämään muuttujia suoraan PHP-skriptiin (register_globals). Toiminto on oletusarvoisesti poissa päältä versiosta 4.2.0 lähtien,[9] mutta moni vanhempi ohjelmisto on kehitetty oletuksella, että register_globals -valinta on käytössä. PHP 6:sta toiminto poistetaan kokonaan. [13]
- PHP ei tue useamman tavun mittaisia merkkejä, mikä aiheuttaa ongelmia Unicode-merkistön käytössä. Täysi Unicode-tuki on tulossa PHP 6:een.[13]
- PHP:n sisäinen yhtenäisyys on hataraa. Jotkin kirjastofunktiot hyväksyvät argumentit eri järjestyksessä kuin toiset. Lisäksi PHP:ssa on useita toiminnaltaan identtisiä funktioita. Valmiiden funktioiden nimet ovat myös usein poikkeavia liitteiltään. Kuten esimerkiksi str_rot13(); ja strlower();
- PHP-ohjelmissa ei ole sisäänrakennettua tapaa käsitellä säikeitä, mikä tekee suurten tietomäärien käsittelystä yhden PHP-skriptin sisällä vaikeaa.
PHP:n sisarprojektit [muokkaa]
PHP:lla on kolme sisarprojektia:
Tunnettuja projekteja jotka hyödyntävät PHP:tä [muokkaa]
- MediaWiki, suosittu wiki-järjestelmä, johon muun muassa Wikipedia pohjautuu
- phpBB, suosittu keskustelusovellus
- osCommerce, avoimen lähdekoodin verkkokauppasovellus
- Facebook, suosittu yhteisösivusto
- IRC-Galleria, suomalainen yhteisösivusto
- Travian, Suomessakin tunnettu moninpelattava selainpeli
- Moodle, Avoimen lähdekoodin oppimisalusta
Kirjallisuutta [muokkaa]
- Ari Rantala: Web-ohjelmointi. Docendo, 2005. ISBN 951-846-264-X.
- W. Jason Gilmore: Beginning PHP and MySQL 5: From Novice to Professional, Second Edition. Apress, 2006. ISBN 1-59059-552-1. , myös suomeksi W. Jason Gilmore: PHP & MySQL 5 Tehokas hallinta. Gummerus, 2006. ISBN 952-5592-11-1.
- Kevin Tatroe, Rasmus Lerdorf, Peter MacIntyre: Programming PHP. O'Reilly Media, 2006. ISBN 0-596-00681-0. (englanniksi)
Katso myös [muokkaa]
- PHP:n luokkakirjastot
- Smarty
- Komentosarjakieli
- Luettelo ohjelmointikielistä
- Tietokanta
- Olio-ohjelmointi
- Avoin lähdekoodi
- LAMP, WAMP, WIMP
Lähteet [muokkaa]
- ↑ PHP käsikirja, johdanto The PHP Group. Viitattu 6. maaliskuuta 2007. (englanniksi)
- ↑ TIOBE: TIOBE Programming Community Index TPCI. Viitattu 1. helmikuuta 2007. (englanniksi)
- ↑ Usage of server-side programming languages for websites 2011-01-30. W3Techs. Viitattu 2011-01-30.
- ↑ Rasmus Lerdorf: Re:There ARE other scriping languages besides PHP 15. syyskuuta 2006. slashdot.org. Viitattu 6. maaliskuuta 2007. (englanniksi)
- ↑ Rasmus Lerdorf: Announce: Personal Home Page Tools (PHP Tools) 8. kesäkuuta 1995. Uutisryhmät. Viitattu 6. maaliskuuta 2007. (englanniksi)
- ↑ PHP käsikirja, History of PHP and related projects The PHP Group. Viitattu 6. maaliskuuta 2007. (englanniksi)
- ↑ http://www.php.net/ChangeLog-5.php (englanniksi)
- ↑ http://php.net/#2007-07-13-1 (englanniksi)
- ↑ a b http://www.php.net/ChangeLog-4.php
- ↑ a b PHP: PHP manuaali: perussyntaksi The PHP Group. Viitattu 7. maaliskuuta 2007.
- ↑ PHP: PHP manuaali: perussyntaksi The PHP Group. Viitattu 7. maaliskuuta 2007. (englanniksi)
- ↑ PHP: PHP manuaali, luku 12: Variables The PHP Group. Viitattu 7. maaliskuuta 2007. (englanniksi)
- ↑ a b Minutes PHP Developers Meeting The PHP Group. Viitattu 8. maaliskuuta 2007. (englanniksi)
Aiheesta muualla [muokkaa]
- Viralliset kotisivut (englanniksi)
- Mureakuhan Wiki: PHP-opas
- Ohjelmointiputka: Käytännön PHP-opas
- Practical PHP Programming - Kattava PHP-opas (englanniksi)
- Top PHP Tutorials (englanniksi)
- 2kmediat.com: PHP artikkelisarja
| Tuotantokäytössä |
Ada • APL • AWK • Assembly • C • C++ • C# • COBOL • Delphi • Eiffel • Fortran • Java • JavaScript • Lua • Lisp • Objective-C • Pascal • Perl • PHP • PostScript • Python • Ruby • Smalltalk • TCL • Visual Basic |
|---|---|
| Akateemiset | |
| Historialliset |
ALGOL • BASIC • Modula-3 • MUMPS • Plankalkül • PL/I • Simula |
Sivulta puuttuu