PHP kendi yorumlayıcısı ile birlikte kullanılan bir script dilidir. Bu
yorumlayıcının yaptığı aslında HTML kodları arasına yerleştirilmiş PHP
kodlarını ayrıştırıp işleyerek sonuçta saf HTML formatında bir çıktı
üretmek web sunucuya iletmektir.
PHP, UNIX sistemleri üzerinde
kullanılacak ise modül olarak veya CGI olarak kurulabilir. CGI olarak
kurulduğunda web sunucunun uid'i dışındaki kullanıcı kimikleri altında
program çalıştırabilme esnekliği vermesine karşın bu güvenlik açısından
risklidir. Ayrıca CGI programı olarak yüklendiğinde, kullanıcıların her
istemi için PHP yorumlayıcısının tekrar tekrar hafızaya yüklenmesinin
kaynak ve zaman kullanımı açısından maliyeti yüksektir. Bu nedenlerle
modül olarak kurulması ve web sunucu ile birlikte hafızaya yüklenmesi
bu sakıncaları ortadan kaldırmaktadır. Tek dezavantajı upgrade
gerektiğinde web sunucu ile birlikte tekrar derlenmesinin gerekmesidir.
PHP WindowsNT ortamına kurulacaksa ISAPI modülü olarak derlenip IIS ile birlikte kullanılması gerekir.
Dilin Yapısı
PHP,
HTML gömülü bir dildir. Yani aynı dosya içinde hem HTML, hem de PHP
kodu kullanılabilmektedir. Kod içinde HTML'den PHP'ye geçmek için bazı
ayıraçlar kullanılması gerekir. Örneğin:
PHP- Kodu: <TABLE
SIZE="500"> <TR> <TD><? Buraya PHP kodu yazılacak
?><TD> ... HTML taglari içinde de PHP kullanmak için şu metod
seçilmeli:
PHP- Kodu: <TABLE SIZE="<?PHP Buraha PHP kodu yazılacak ?>" ... Veya:
PHP- Kodu: <script language="php"> Buraya PHP kodu yazılacak </script>
Ve İlk 'Hello World' cümlemiz:
PHP-
Kodu: <html> <head> <title>Example</title>
</head> <body> <? echo "Hello World..."; ?>
</body> </html> Browser bunu bize:
Hello World...şeklinde gösterecektir.
PHP'nin en güzel özelliklerinden birisi php dışından gelen değişkenlerin çok rahat kullanılabilmesi:
PHP-
Kodu: <form action="foo.php3" method="post"> Adınız: <input
type="text" ad="name"><br> <input type="submit"
name="submit" value="Tamam"> </form>
Yukarıdaki formdan gönderilen değişkenler php içinde aşağıdaki gibi doğrudan kullanılanılabilir:
PHP-
Kodu: <? echo "Adiniz:".$name; ?> PHP, integer, float, string,
array gibi çeşitli değişken tipleri içerir. Ancak değişkelerinizin tipi
sabit değildir. Yani çalışma anında değişkeninizin tipini
değiştirebilirsiniz (type juggling):
PHP- Kodu: $foo = "0"; // $foo
is string (ASCII 48) $foo++; // $foo is the string "1" (ASCII 49) $foo
+= 1; // $foo is now an integer (2) $foo = $foo + 1.3; // $foo is now a
double (3.3) $foo = 5 + "10 Little Piggies"; // $foo is integer (15)
$foo = 5 + "10 Small Pigs"; // $foo is integer (15)
Burada
istenmeyen durumlar oluşmaması için type casting kullanılarak
değişkenin değerinin nasıl yorumlanmasını istediğimizi belirtebiliriz.
Static değişkenler kullanılarak fonksiyonlara gerri dönüşlerde değişkenin son aldığı değer kullanılabilir:
Variable
variable'lar oldukça ilginç bir yaklaşım. Yalnızca recursive
yapılabileceğini düşündüğünüz pekçok işi bunlara yaptırabilirsiniz.
Örneğin aşağıdaki kod çıktı olarak 'hello world' basar:
PHP- Kodu: $a = "hello"; $aa = "world"; echo "$a $a{$a}";
Recursive fonksiyon çağrıları yapılabilir.
Diziler
çalışma aında büyüyebilir. ( Bu özellik PHP yorumlayıcı
konfigürasyonunda gerekli ayar yapılmadan dikkatsiz kullanılırsa
işletim sisteminin bile göçmesine sebep olabilir).
B>eval</B>
fonksiyonu kullanılarak kod içeriği dinamik olarak oluşturulabilir. (
Sağlamlık ve güvenlik açısından riskli bir komut ):
PHP- Kodu: eval( "echo \"Merhaba\"" );
PHP,
Perl veya benzeri araçların sunduğu regular expression desteğini de
vermektedir. Bu sayede karmaşık metin işleme (text processing) veya
parsing işlemleri çok az komut yazılarak gerçekleştirilebilmektedir.
Örneğin string olarak tutulan HTML formatındaki içerikteki tüm
etiketler büyük harf yapılabilir:
PHP- Kodu: preg_replace("/(<\/?)(\w+)([^>]*>)/e","'\\1'.strtoupper('\\2').'\\3'",$html_body) ;
yorumlayıcının yaptığı aslında HTML kodları arasına yerleştirilmiş PHP
kodlarını ayrıştırıp işleyerek sonuçta saf HTML formatında bir çıktı
üretmek web sunucuya iletmektir.
PHP, UNIX sistemleri üzerinde
kullanılacak ise modül olarak veya CGI olarak kurulabilir. CGI olarak
kurulduğunda web sunucunun uid'i dışındaki kullanıcı kimikleri altında
program çalıştırabilme esnekliği vermesine karşın bu güvenlik açısından
risklidir. Ayrıca CGI programı olarak yüklendiğinde, kullanıcıların her
istemi için PHP yorumlayıcısının tekrar tekrar hafızaya yüklenmesinin
kaynak ve zaman kullanımı açısından maliyeti yüksektir. Bu nedenlerle
modül olarak kurulması ve web sunucu ile birlikte hafızaya yüklenmesi
bu sakıncaları ortadan kaldırmaktadır. Tek dezavantajı upgrade
gerektiğinde web sunucu ile birlikte tekrar derlenmesinin gerekmesidir.
PHP WindowsNT ortamına kurulacaksa ISAPI modülü olarak derlenip IIS ile birlikte kullanılması gerekir.
Dilin Yapısı
PHP,
HTML gömülü bir dildir. Yani aynı dosya içinde hem HTML, hem de PHP
kodu kullanılabilmektedir. Kod içinde HTML'den PHP'ye geçmek için bazı
ayıraçlar kullanılması gerekir. Örneğin:
PHP- Kodu: <TABLE
SIZE="500"> <TR> <TD><? Buraya PHP kodu yazılacak
?><TD> ... HTML taglari içinde de PHP kullanmak için şu metod
seçilmeli:
PHP- Kodu: <TABLE SIZE="<?PHP Buraha PHP kodu yazılacak ?>" ... Veya:
PHP- Kodu: <script language="php"> Buraya PHP kodu yazılacak </script>
Ve İlk 'Hello World' cümlemiz:
PHP-
Kodu: <html> <head> <title>Example</title>
</head> <body> <? echo "Hello World..."; ?>
</body> </html> Browser bunu bize:
Hello World...şeklinde gösterecektir.
PHP'nin en güzel özelliklerinden birisi php dışından gelen değişkenlerin çok rahat kullanılabilmesi:
PHP-
Kodu: <form action="foo.php3" method="post"> Adınız: <input
type="text" ad="name"><br> <input type="submit"
name="submit" value="Tamam"> </form>
Yukarıdaki formdan gönderilen değişkenler php içinde aşağıdaki gibi doğrudan kullanılanılabilir:
PHP-
Kodu: <? echo "Adiniz:".$name; ?> PHP, integer, float, string,
array gibi çeşitli değişken tipleri içerir. Ancak değişkelerinizin tipi
sabit değildir. Yani çalışma anında değişkeninizin tipini
değiştirebilirsiniz (type juggling):
PHP- Kodu: $foo = "0"; // $foo
is string (ASCII 48) $foo++; // $foo is the string "1" (ASCII 49) $foo
+= 1; // $foo is now an integer (2) $foo = $foo + 1.3; // $foo is now a
double (3.3) $foo = 5 + "10 Little Piggies"; // $foo is integer (15)
$foo = 5 + "10 Small Pigs"; // $foo is integer (15)
Burada
istenmeyen durumlar oluşmaması için type casting kullanılarak
değişkenin değerinin nasıl yorumlanmasını istediğimizi belirtebiliriz.
Static değişkenler kullanılarak fonksiyonlara gerri dönüşlerde değişkenin son aldığı değer kullanılabilir:
Variable
variable'lar oldukça ilginç bir yaklaşım. Yalnızca recursive
yapılabileceğini düşündüğünüz pekçok işi bunlara yaptırabilirsiniz.
Örneğin aşağıdaki kod çıktı olarak 'hello world' basar:
PHP- Kodu: $a = "hello"; $aa = "world"; echo "$a $a{$a}";
Recursive fonksiyon çağrıları yapılabilir.
Diziler
çalışma aında büyüyebilir. ( Bu özellik PHP yorumlayıcı
konfigürasyonunda gerekli ayar yapılmadan dikkatsiz kullanılırsa
işletim sisteminin bile göçmesine sebep olabilir).
B>eval</B>
fonksiyonu kullanılarak kod içeriği dinamik olarak oluşturulabilir. (
Sağlamlık ve güvenlik açısından riskli bir komut ):
PHP- Kodu: eval( "echo \"Merhaba\"" );
PHP,
Perl veya benzeri araçların sunduğu regular expression desteğini de
vermektedir. Bu sayede karmaşık metin işleme (text processing) veya
parsing işlemleri çok az komut yazılarak gerçekleştirilebilmektedir.
Örneğin string olarak tutulan HTML formatındaki içerikteki tüm
etiketler büyük harf yapılabilir:
PHP- Kodu: preg_replace("/(<\/?)(\w+)([^>]*>)/e","'\\1'.strtoupper('\\2').'\\3'",$html_body) ;