23 Haziran 2016 Perşembe

PHP KOD YAZIM KURALLARI

PHP KOD YAZIM KURALLARI
PHP kodları, oluĢturacağımız HTML sayfalarında HTML
etiketlerinin arasında kendi özel ayracı içinde yazılır:
<html>
<?PHP
echo ("Merhaba Dünya!");
?>
</html>
Php kodlama sintaksı bir çok dilden gelenler için çeĢitli
kolaylıklar içermektedir. Kodlamada akılda
bulundurulması gerekenler
1. Php kodları <?PHP .... ?> veya <? .... ?>
arasında yazılırlar.
2. Her komut satırından sonra ―;‖ noktalı birgül ile
komut sonlandırılır. Ancak istisna durumlar vardır.
3. Php‘de açıklama satırı eklemek için /* ------ */, #
veya // tagları kullanılır. Bunlar bulundukları yere
göre kodun belli bir kısmını PHP tarafından gözardı
edilmesini sağlarlar.
4. PHP değiĢkenleri $iĢareti ifade edilirler. $adi gibi.
5. DeğiĢken isimlerin boĢluk kullanılamaz. Örneğin
$adi doğru bir değiĢkendir ama ―$adı soyadı―
Ģeklinde bir değiĢken kullanılamaz.
6. PHP dilinde diğer dillerden farklı olarak Türkçe
harfler kullanılabilir. Örneğin $adı="ali";echo $adı;
ġeklinde yazılan bir komut çalıĢır. Ancak bir çok
diller çlaıĢan birisi olarak bunu tavsiye etmiyorum.
7. DeğiĢken isimleri rakamla baĢlayamaz mutlaka
harfle baĢlamalıdır.
8. DeğiĢkenleri isimlendirirken uygun bir notasyonda
isimler kullanılmalıdır. Ayrıca değiĢken isimleri
gereksiz yere uzatılmamalı ancak ancak
anlaĢılmayacak Ģekilde kısada olmamalıdır.
Örneğin $sayfasonudegiskenikullanimornegi uygun
bir isim degildir. Keza $a,$b değiĢkenler tüm script
boyunca kullanılacaksa uygun isimler değildir.
9. PHP dilinin ayrılmıĢ kelimeleri değiĢken adı olarak
kullanılamaz (örneğin Not, if, switch gibi)
10. PHP değiĢken isimlerinde harf duyarlıdır.
Örneğin $adi ve $ADI değiĢkenleri aynı değildir ve
iki ayrı değiĢkendir.
11. Metin değerleri ― veya ‗ arasında yazılabilir.
Eğer metin içinde çift tırnak kullanılacaksa bu çift
tırnaktan önce \ karakteri (ters slash) yazılmalıdır.
12. Metin değiĢkenlerin içeriğine bir karakter
dizisi gibi eriĢilebilir.
13. ―‖ arasında yazılan değiĢkenlerin içeriği
ekrana basılırken ‗ tırnak kullanılır ise değiĢken
isimleri metin gibi ele alınır ve örneğin
$adi=‖Ahmet‖; ile atama bile yapılmıĢ olsa echo
‗$adi‘ ekrana Ahmet değil değiĢkenin adını
yazacaktır.
14. Çift tırnak içindeki özel karakterler iĢlenirken
tek tırnak içindekiler metin olarak ele alınır.
15. Kontrol ve döngü bloklarında iĢlenecek komut
sayısı birden fazla ise bu komutlar {} içine alınarak
koĢul yada döngüye ait komutların belirtilmesi
gerekir. (aksi durumda bir mantık hatası oluĢur)
Örnek değiĢken tanımları
$adi Doğru
$1abc YanlıĢ
$_adi Doğru
$adi soyadi YanlıĢ
$adi‘soyadi YanlıĢ
PHP bir Script dilidir ve dolayısı ile ; PHP ile yazdığınız
"programlar" birer düzyazı dosyasıdır. PHP komutları
aĢağıdaki çiftler arasına yazılabilir demiĢtik.
1. <?PHP .... ?>
2. <? .... ?>
Bunlara PHP komut ayracı denir; birinci türü uzun veya
standart ayraç sayılır; ikincisine ise "kısa ayraç" denir.
PHP yorumlayıcısının kısa ayraç kullanmasını
istemiyorsak, PHP.ini dosyasındaki, short_open_tag =
On: satırını short_open_tag = Off; yapmak yeter.
Bununla birlikte uzun vadede, PHP programlarınızda
HTML yerine XML kullanmak istiyorsanız, Ģimdiden elinizi
uzun ayraca alıĢtırmanız yerinde olur; çünkü XML
etiketleri "<?xml" Ģeklinde baĢlar ve "?>" Ģeklinde biter.
Eğer siz <??> ile kod yazacak olursanız XML kodlarınızın
PHP den ayrılması güçleĢecektir. (iĢin aslı XML kodlaması
için PHP de ilk satır echo komutu ile yaptırılır)
ASP ile çalıĢan Web programcılarının alıĢtığı stil olan
"<%" ve "%>" ASP bloğunu kullanmalarından dolayı
hata almalarını önlemek içinde bir kolaylık
düĢünülmüĢtür. PHP.ini dosyasını açarak, asp_tags =
Off; satırını ON yaparak ASP açılıĢ kapanıĢ etiketleriylede
PHP kodlamak mümkün olur!
PHP komutlarınızı <SCRIPT> etiketiyle de
kullanabilirsiniz.
<HTML>
<SCRIPT LANGUAGE="PHP">
print ("Merhaba Dünya!");
</SCRIPT>
</HTML>
Ancak bunlar çok kullanılan durumlar değildir. Daha
öncede belirtildiği gibi sadece önceden baĢka dilleri
kullananlar için kolaylık olsun diye eklenmiĢlerdir.
NOT: PHP kodları ne Ģekilde yazılırsa yazılsın sunucuda
çalıĢırlar. PHP <SCRIPT> etiketi içinde yazılsa dahi.
Javascript veya VBScript gibi scriptler ise kullanıcı
tarafında çalıĢırlar. Bu bakımdan 3. kullanım kafa
karĢıklığına sebep olmamalıdır. PHP daima sunucuda
çalıĢtırıldığından dolayı ziyaretçiye asla PHP kodları
gösterilmez.
PHP kodlarımız, oluĢturulmasını istediğimiz sayfanın
HTML kodları ile ―kod adacık‖ oluĢturmak üzere içiçe
yazılır. Örnek koda bakarsak bunu görebiliriz:
<HTML>
<HEAD>
<TITLE>PHP ile Merhaba</TITLE>
</HEAD>
<BODY>
<CENTER>
<B>
<H1>
<?PHP
print "Merhaba Dünya!";
?>
</H1>
</B>
</CENTER>
</BODY>
</HTML>
Sayfamızın görüntüsünde hiç bir değiĢiklik olmamakla
birlikte, Browser'a giden HTML kodları önemli ölçüde
değiĢmiĢ olacaktır.
Açıklama (Yorum) Satırları
Yazılan kodun üzerinden zaman geçtikçe helede kod
blokları uzun olunca kodu bir anda kavramak ve anlamak
zorlaĢır. ĠĢte bunun için kod satırlarının arasına açıklama
satırları eklememiz gereklidir.
NOT: En iyi yazılmıĢ kod en çabuk anlaĢılabilen ve
dökumante edilmiĢ koddur.
PHP ayraçları içinde iki türlü yorum bulunabilir: Çoksatırlı
yorumlar ve tek satırlı yorumlar. Birinci grubu,
baĢına "/*" ve sonuna "*/‖ iĢaretleri koyarak, ikinci
grubu ise sadece baĢına ―//‖ veya # iĢareti koyarak
belirtiriz:
<HTML>
<!- - Bu satır HTML'in yorum satırı
Buraya istediğimiz kadar yorum yazabiliriz..
Browser bu satırları dikkate almaz - - >
<HEAD>
<TITLE>PHP ile Merhaba</TITLE>
</HEAD>
<BODY>
<CENTER>
<B>
<H1>
<?PHP
/*
Bu satır da PHP'nin çok-satırlı yorum bölümü..
Bunu da PHP yorumcusu asla dikkate almaz
Buraya istediğimiz kadar yorum yazabiliriz.
*/
print "Merhaba Dünya!";
// Bu ise PHP'nin tek satırlı yorum bölümü
// Bu satırları da PHP yorumcusu dikkate almayacaktır.
# Bu ise PHP'nin tek satırlı yorum bölümü
# Bu satırları da PHP yorumcusu dikkate almayacaktır.
?>
</H1>
</B>
</CENTER>
</BODY>
</HTML>
<?PHP
# Bu satır da yorum bölümü..
# Bunu da PHP yorumcusu asla dikkate almaz
# Buraya istediğimiz kadar yorum yazabiliriz.
print "Merhaba Dünya!";
?>
Diyez ile yorum haline getirdiğimiz satırların sonuna
baĢka iĢaret koymaya gerek yoktur.

PHP - Web Sunucusu – PHP Kurulumu

PHP - Web Sunucusu – PHP Kurulumu
Web master açısından PHP sunucu tarafından çalıĢan bir
programdır. Dolayısı ile sunucu ile uyumlu olmalıdır 5.
sürümü itibariyle, PHP bütün Unix-türevi sistemler
(örneğin Linux, Mac Os, BSD, Solaris) ve Microsoft
Windows sistemleri ile uyumludur. Birlikte çalıĢabileceği
Web sunucu programları arasında Apache, IIS, FHTTP,
Omni HTTPd, Xitami ve Windows 95/98 için PWS
(Personal Web Server) vardır.
Internet ortamında ortamında web sunuculara PHP
iĢleme yeteneğinin eklenmesi haliyle bizim sorunumuz
değildir, (iĢimiz hosting ise o zaman baĢka tabii). Bizim
için Hosting firmasının PHP desteği verip vermediğini
bilmek yeter. Fakat çalıĢmalarımızın doğruluğunu,
hataların kontrolünü yapabilmek için (hatta site
tasarımını gerçek ortamdaki gibi müĢteri test edebilsin
diye) kendi bilgisayarımıza bir kiĢisel Web Server kurmak
ve bu programı PHP-uyumlu hale getirmek gerekir.
Normal Ģartlar altında Apache, PHP, MYSQL kurulumu
detaylı bir iĢlemdir. Merak edenler için kitabın sonlarında
yinede yer verilecektir. Ama benim önerim bu yöntemi
takip etmeyip, hazır WAMP paketlerinden birini
kullanmanız olacaktır.
WAMP Windows+Apache+Mysql+PHP kelimelerinin
kısaltılmıĢıdır. WAMP paketleri tüm bu programların
sisteminize otomatik kurulumunu sağlarlar. Böylece
ayarlarla uğraĢmadan doğrudan iĢinize bakabilirsiniz.
Linux için tasarlanan bu paketler ise LAMP olarak
bilinirler.
XAMPP
En çok tutulan WAMP paketlerinden birisi
www.apachefriends.org adresinden bulabileceğiniz
XAMMP paketidir. Linus sürümüde vardır. PHP varsayılan
olarak desteklenmiĢtir. Ayrıca istenirse JSP çalıĢtırmak
için TOMCAT eklentiside vardır. Paket bir çok ögeyi
barındırdığı için biraz büyük, download edilmesi daha
uzun ve dosya sayısı çok fazlaolduğu için kopyala yapıĢtır
vs iĢlemlerde belirgin bir yavaĢlık sözkonusu olmakta.
APPSERV
Yine aynı Ģekilde APPSERV paketide iyi bir pakettir.
Kendine özgü bir kullanıcı kitlesi olup Flash disk üzerinde
çalıĢmasını sağlayan betikleride vardır.
Uniform Server
Benim kiĢisel olarak tercih ettiğim WAMP paketi budur.
www.uniformserver.com adresinde yayınlanan bu paket,
küçük ve sadece amaca yönelik bir paket. Üstelik bir
flash disk üzerinde tüm tasarımları (MYSQL verileri ve
veri ayarları ilede birlikte) taĢıabilme avantajı vermekte.
Bu iĢlemi XAMMP ilede yapmak mümkün ama Uniform
açık halde iken sadece 40 mb civarı yer tutarken XAMPP
250 mb civarında yer kaplıyor. Fakat Uniform Server
içinede PEAR ve diğer bir çok eklentinin elle kurulması
gerekebiliyor. Uniform varsayılan olarak sadece MYSQL
eklentisi hazır halde geliyor ve PEAR kütüphaneleride
dahil değil.
EasyPHP
EasyPHP oldukça tutulan bir WAMP paketidir.
www.easyphp.org adresinde ki sitesinde güncel
sürümleri bulunmaktadır.
Bunlar dıĢında Saint WAMP, Php Triad, LWS, WD Studio
vs uzayıp giden bir liste Ģeklinde bir sürü WAMP paketi
var.
Benim seçim yapma kritelerim ise
1. TaĢınabilir olmalı
2. Admin Paneli basit olmalı
3. Sık sık güncellenmeli
4. Fazla yer kaplamamalı
5. Ayarları mümkün olduğunca hazır gelmeli ve ilave
ayarlar için yormamalı.

PHP Dilinin Genişletilebilirliği

PHP Dilinin GeniĢletilebilirliği
PHP dilindeki fonksiyonlar gerekli geniĢletme
kütüphanelerinden aranır. Örneğin siz kodunuzda bir
fonksiyon kullandığınızda bunu içeren PHP kütüphanesi,
geniĢletme dosyalarının tutulduğu klasörde bulunamazsa
hata mesajı verilir.
PHP dili için geliĢtirilen eklentiler PECL adı verilen "PHP
Extension Code Library" kelimelerinden oluĢturulmuĢ bir
kütüphanede dağıtılmaktadır.
Bazı PHP Kütüphaneleri ve iĢlevleri
php_bz2.dll Bzip2 dosyaları ile çalıĢma.
SıkıĢtırma ve açma iĢlemi
php_zip.dll Zip dosyaları ile çalıĢmaç
sıkıĢtırma ve açma iĢlemi
php_curl.dll DeğiĢik tipte protokol kullanan
istemci ve sunucular
(ftp,http,https,gopher vs) ile
bağlantı kurabilmek için
php_exif.dll Exif bilgileri ile çalıĢma (resim
meta verileri)
php_fdf.dll Form Data Format eklentisi. PDF
dosyalarında formlarla çalıĢma
php_gd2.dll Grafik oluĢturma ve çizme
php_gettext.dll DeğiĢik dillerde çalıĢabilecek
yazılımlar için
php_gmp.dll
php_imap.dll IMAP protokolü ile iletiĢim
kurmak için
php_ldap.dll LDAP (Lightweight Directory
Access Protocol) protokolü ile
iletiĢim kurmak için gerekli
fonksiyonlar
php_mbstring.dll MultiByte String iĢleme
fonksiyonları
php_mcrypt.dll DES, TripleDES, Blowfish
(varsayılan), 3-WAY, SAFERSK64,
SAFER-SK128, TWOFISH,
TEA, RC2 and GOST in CBC,
OFB, CFB, ECB cipher, RC6 ve
IDEA algoritmaları ile Ģifreleme
yapmak için gerekli kütüphane
(son iki free algoritma değildir)
php_mhash.dll HASH Ģifreleme fonksiyonları
php_mime_magic.dll Dosya içeriğine bakıp dosya türü
hakkında tahminde bulunan
kütüphane dosyası. (Bu eklenti
yerine artık Fileinfo eklentisi
geçmektedir. Bu eklenti geri
dönük uyumluluk için
korunmaktadır)
php_ming.dll Flash animasyon dosyaları
üretmek için gerekli fonksiyonlar
php_openssl.dll SSL protolü için
php_snmp.dll SNMP protokolü (Simple Network
Managemet Protocol)
php_soap.dll Web servisleri için
php_sockets.dll Soket bağlantılar için
php_xmlrpc.dll XML ve RPC kütüphanesi. XMLRPC
sunucu ve istemcileri
geliĢtirmek için gerekli
fonksiyonlar
php_xsl.dll XML dosyalarına çıkıĢ formatı
tanımlamak için gerekli
fonksiyonlar
php_dbase.dll Dbase VTYS bağlantısı
php_interbase.dll Interbase VTYS bağlantısı
php_msql.dll Msql VTYS bağlantısı
php_mssql.dll Mssql VTYS bağlantısı
php_mysql.dll Mysql VTYS bağlantısı
php_mysqli.dll Mysql VTYS bağlantısı (Nesne
eriĢimlidir)
php_oci8.dll Oracle VTYS bağlantısı (Oracle
Call Interface 8)
php_pgsql.dll Postgresql VTYS bağlantısı
php_sqlite.dll Sqlite VTYS bağlantısı
php_sybase_ct.dll Sybase VTYS bağlantısı
php_pdo.dll PHP Data Object bağlantılarının
kullanımı için (Database
Abstraction Layer kütüphanesi)
php_pdo_firebird.dll Firebird PDO bağlantısı
php_pdo_mssql.dll Mssql PDO bağlantısı
php_pdo_mysql.dll Mysql PDO bağlantısı
php_pdo_oci.dll Oracle PDO bağlantısı
php_pdo_oci8.dll Oracle PDO bağlantısı
php_pdo_odbc.dll ODBC PDO bağlantısı
php_pdo_pgsql.dll Postgres PDO bağlantısı
php_pdo_sqlite.dll Sqlite PDO bağlantısı

PEAR (PHP Extension and Application Repository)
PEAR aslında çeĢitli iĢler için yazılmıĢ kodların bir araya
getirilerek diğer programcılar tarafındanda kullanılmasını
sağlayan hazır kodlar kütüphanesidir. En çok bilinen
PEAR paketi ise PEAR::DB paketidir. PEAR ile
programlama konusu çok derin bir konu olup bu kitapta
çoğunlukla PEAR barındırmayan kodlar kullanılacaktır.
Bunun sebebi PEAR‗ın zor veya kötü bir Ģey olması
değildir. Burada ilk amaç PHP öğrenmek olduğu için
belirli bir aĢamaya gelinceye kadar klasik kodlama
teknikleri ile devam edilecektir.

22 Haziran 2016 Çarşamba

PHP Dili ve Veritabanı Programları ile İlişkisi

PHP Dili ve Veritabanı Programları ile İlişkisi
Günümüzde neredeyse tüm programlama dilleri ile en
çok veritabanına yönelik programlar yazılmaktadır.
Kısaca programların çoğu hep bir Ģeyleri kayıt altına
almak üzere yazılmaktadır. Zaman içinde bu kayıt altına
alınan bilgilerin yönetilmesi ve hızlı iĢlenmesi bir sorun
olarak ortaya çıktı ve bu defada ortaya bu verilerin
iĢlenmesi konusunda teknikler içeren DBMS olarak
kısaltılmıĢ haliyle Data Base Management System
programları çıktı. Türkçe olarak VTYS yani Veri Tabanı
Yönetim Sistemi ifadesi kullanılmaktadır. Veritabanı
programları kendisine gönderilen verileri istenen
ortamlarda tutar, talep edilmiĢ ise bunları aramada
kolaylık sağkayacak indeks dosyalarını güncelleĢtirir,
gelen talebe göre aranan Ģartlara uygun kayıtları bulur
ve telp eden programa gönderir. VTYS geliĢtiren Ģirketler
ise kendi sistemlerinin kullanımını artırmak için kendi
sistemlerinin kullanımında yardımcı olmak üzere çeĢitli
sürücüleri geliĢtirip bunları yazılım dünyasına
sunmaktadır. Bu bakımdan günümüzde VTYS ile iliĢki
kurmak isteyen diller sadece bu VTYS ile iletiĢim kuran
bir sürücü dosyası kullanmak durumundadır. PHP
geliĢtiricileri ise neredeyse bilinen bütün VTYS sistemleri
için bu sürücülere eriĢimde kullanmak üzere bağlantı
dosyaları hazırlamıĢlardır. Örneğin MYSQL için gerekli
olan LIBMYSQL.DLL dosyası (Mysql tarafından
geliĢtirilmiĢtir.) PHP ile hazır gelmektedir. PHP ise bu
LIBMYSQL.DLL dosyasını kendisi için geliĢtirilmiĢ bir
bağlantı kütüphanesi ile yönetir. PHP geliĢtiricileri aĢağı
yukarı bütün VTYS sistemleri için sürücüler geliĢtirmiĢtir
(Adabas, dBase, FilePro, Informix, InterBase, mSQL,
Oracle, Solid, Sybase, Sqlite, Firebird ve bir çok Unix
veritabanı). PHP ayrıca, ODBC sürücüleri ile de
çalıĢabilir; ve ODBC'nin okuduğu bütün veritabanlarından
veri çekebilir. (ODBC'nin Unix-Linux sürümü de vardır.)
PHP dilinin detaylarından önce PHP ile kullanılabilen
veritabanlarından üçünden bahsedelim. PHP'nin varolma
sebeplerinin baĢında, ticarî Unix veya Microsoft Windows
iĢletim sistemlerinden ayrı, kar kaygısı olmayan, her
türlü platformda çalıĢabilen Script dili ile bu dille
kullanılabilecek yine Açık Sistem ürünü bir VTYS aracına
sahip olmak gelir. Perl, PHP'den çok önce de bu
platformda mevcuttu ama PERL VTYS yönetmekten çok
sadece metin dosyalarını okuyup ve sonucu
biçimlendirerek rapor haline getirmek amacıyla
tasarlanmıĢtı. Bu bakımdan PERL veritabanına dayalı
iĢlemlerde programcıya çok güçlük çıkartıyordu.
GeliĢtirilmeside sıkıntılı bir süreçti. PERL açılım olarak
―Practical Extraction and Report Language‖
kelimelerinden oluĢyor dendiği zaman zaten PERL dinin
amacı ve yapmak üzere tasarlandığı Ģey kendiliğinden
ortaya çıkmıĢ olmaktadır. ASP ise sadece Windows
üzerinde çalıĢabilir olması sebebiyle hosting konusunda
masraflı bir dildi. Üstelik Open source felsefesine uygun
değildi. PHP, tasarımcılarının MySQL ve PostgreSQL
teknolojilerini geliĢtiren kurum ve firmalarla yaptığı yakın
iĢbirliği sonucu ikinci sürümünden itibaren veriyönlendirmeli
(Data-Driven) Web uygulaması alanında
önemli bir araç olarak belirdi. PHP ile, Web Server'a
sayfanızı Internet ziyaretçisine göndermeden önce bir
takım komutları yürütmesini, bir takım veri dosyalarını
açıp içindeki kayıtları okuyup örneğin bir tablo içine
yerleĢtirmesini söyleyebiliriz.
MySQL, PostgreSQL ve SQLite ise, açık Kaynak Ģeklinde
geliĢtirilen Veri Tabanı Yönetim Sistemi – VTYS (Data
Base Management System –DBMS) dediğimiz türden
programlardır. En çok bilinen VTYS programları ticari
olarak Oracle, MSSQL, Informix, DB2 ve açık kaynak
tarafında ise MYSQL, PostgreSQL, Firebird ve Sqlite‘dır.
MySQL, çok-kanallı (multi-threaded), çok kullanılıcılı
çalıĢabilen (multi-user), hızlı ve sağlam (robust) bir
veritabanı yönetim sistemidir. Mysql veri tablolarını iki
formatta tutabilmekteydi. InnoDB ve MYisam.
Veritabanları arasında kızıĢan rekabet sonucu pabucu
pahalı gören Oracle, Innobase Ģirketini satın alarak bir
anlamda MYsql ‗in elini kolunu bağladı. Çünkü dilediği
anda Innobase‘i lisanslı hale geçirip MySql ürünlerini
tartıĢmalı duruma getirebilecekti. MYsql ‗in buna cevabı
ise farklı oldu. Onlarda InnoDb yerine yıllar önce
Interbase‘i geliĢtiren Jim Starkey‘ i iĢe alarak, kendi
tablo formatlarını entegre etme yoluna gittiler.
PHP geliĢtiricileri ise 5. sürümden itibaren doğal MYSQL
desteği yerine, SQLite veritabanını öne çıkarmaya
baĢladılar. SQLlite, basit veritabanı iĢlemleri için olduça
yeterli bir veritabanı programıdır. Gerçi network
ortamında çoklu kullanım için uygun değildir ama
internet programlarının çoğunun buna ihtiyacı yoktur.

PHP Nasıl Çalışır?

PHP Nasıl Çalışır
PHP iki Ģekilde çalıĢtırabilir. Ya bir web sunucu üzerinde
yada komut satırından komut verilerek. Birinci yöntem
çok popüler olmasına rağmen ikinci yöntem gittikçe
yayılmaktadır. Çünkü bu sayede kullanıcıya özel kod
yazılması mükün olmaktadır.
Web sunucuda çalıĢma konusuna gelince, PHP, bir Script
dilidir; yani kodları düz yazı dosyaları halinde kaydedilir
ve PHP kodlarının çalıĢtırılması gerektiğinde ise PHP
kodlarını yürütme yeteneğine sahip bir program ile
iĢlenerek elde edilen sonuç geri gönderilir. PHP kodlarını
çalıĢtırmak için web sunuculara PHP modülü kurulur. Bu
modül varsa, Web server bir php kodu istendiğinde bu
PHP modulüne baĢvurur ve PHP modülü ilgili kodu
çalıĢtırıp sonucu tekrar web sunucuya geri gönderir. Web
sunucu iĢlenmiĢ olan bu HTML Ģeklindeki kaynağı ise
talep etmiĢ olan tarayıcıya gönderir.
Bu Ģartlar altında kullanıcı hiçbir zaman PHP dosyasının
gerçekte ne içeriğe sahip olduğu göremez. Sadece
çalıĢma sonucu oluĢan HTML çıktısını görür.
Buradan bir sonuç daha çıkıyor ki; PHP kodlarını
çalıĢtırmak için bir web tarayıcımızın olması yeterli
değildir. Çünkü Web tarayıcısı sadece HTML için gerekli
olan yürütme yeteneğini barındırmaktadır. O yüzden bir
web server kurulu olması ve bu web server üzerine PHP
modülünün yüklenip gerekli ayarların yapılmıĢ olması
gerekir. Modül yoksa ne olur derseniz; yazdığınız kodun
orjinalini halka açmıĢ olursunuz hepsi bu.
HTML için sadece verilerin ekranda nasıl
görüntüleneceğini gösteren biçiçlendirme dilidir demiĢtik.
Dolaysıyla HTML ile web sunucusunda bir iĢlem
yaptıramayız örneğin web sunucusu'ndaki bir veritabanı
dosyasını açıp, içindeki kayıtları okuyamayız, yada web
serverda bir metin dosyası oluĢturup ziyatretçilerin
notlarını vs buraya kayıt edemeyiz. HTML ile Web
ziyaretçimizden bilgi toplayabilirz, bunu sunucuya
gönderebiliriz ama hepsi bu. Sonuçta bu verileri iĢlemek
için bize mutlaka bu yeteneğe sahip bir program gerekir.

PHP ve ASP Karşılaştırması

PHP ve ASP Karşılaştırması
ASP hakkındaki en yanlıĢ kanı ASP ‗yi bir programlama
dili sanmaktır. ASP dil değil (Active Server Pages) Aktif
sunucu Sayfaları adında bir platformdur. Bu platformda
destekleyen her dille ASP platformuna yönelik kod
yazılabilir. En çok kullanılanılan Vbsciript ve günümüzde
ise C# dilidir. ASP maalesef sadece Windows ile çalıĢır
(bazı ticari uygulamalar ASP kodlarını baĢka
sistemlerdede çalıĢtırmaktadır). IIS web sunucusu doğal
ASP desteği ile gelmektedir. Visual Basic bilen kiĢilerde
kısa sürede ASP kodu yazabilirler. Peki neden ASP ye
karĢı PHP derseniz;
1. ASP COM-based architecture ile yapılmıĢtır. ASP
programcıları VBScript kullandıkları zaman aslında
bir COM nesnesi çalıĢtırılır. Daha sonra tarayıcı
tarafında bir COM nesnesinin write methodu daha
aktif edilir. VTYS ile iletiĢim için ayrı bir COM
nesnesi daha çalıĢtırılır. Tüm COM nesneleri üst
üste biner bu da sistemin cevabını geciktirir. PHP
modullerinde ise herĢey PHP için ayrılan hafıza
bölgesinde çalıĢtırılır. Farklı COM nesnelerinin
açılması ve COM nesnelerinin arasındaki
dönüĢümler engellenmiĢ olur. Tek Process
üzerinden tüm iĢlemler yürütülür. Böylece PHP nin
çalıĢma hızı ASP ‗den daha yüksek olur.
2. ASP de kitlenen bir uygulama web server üzerinde
negatif etki yapar (ASP son sürümde bu hatayı
gidermiĢtir). PHP nin böyle bir derdi yoktur. Her
site kendi uzay alanında çalıĢır.
3. ASP açık olan her dosya için hafızada yer ayırır.
Gerçi ASP 5 bu sörünü çözmüĢtür ama ASP 5‘te NT
4 ile çalıĢmadığından sorunlu olan bir çok sunucu
vardır denebilir. PHP ise sadece gereken dosyaları
hafızaya yükler.
4. ASP ile gelen componentler sınırlı ve yetersiz
olduğundan 3. parti component desteğine ihtiyaç
vardır. ĠĢ bununla bitmez bu componente göre kod
geliĢtirdiğinizde bunun sayfayı yayınladığınız web
sunucuya da kurulması gerekir.
5. ASP için için gerekli yazılımlar lisans maliyeti
getirdiğinden, PHP sitelerini yayınlamak daha
ucuza gelmektedir.
6. PHP dilinde daha az komutla daha çok iĢ
yapılabilmektedir. Örneğin aĢağıdaki kodlara bir
bakalım. Her ikiside bir cümledeki kelimeleri alt
alta satırlara yazmak için iĢlem yapacaktır.
<%@ Language=VBScript %>
<% Option Explicit %>
<%
Dim strcumle, arrWords, strWord
strSentence = "ASP PHP dilinden çok daha fazla komut
kullanır "
arrWords = Split(strcumle, " ", -1, 1)
For Each strWord in arrWords
Response.Write(strWord)
Response.Write("<br />")
Next
%>
ġimdi bu programın PHP dilindeki karĢılığına bakalım.
<?php
$sentence = ‗ASP PHP dilinden çok daha fazla komut
kullanır ‗;
$words = explode(' ', $sentence);
foreach ($words as $word) {
echo "$word<br />";
}
?>
PHP ve Cold Fusion KarĢılaĢtırması
Cold fusion çok üst seviye bir dil olup gerçekten iĢinin
ehlidir. Programcı olmayanlar bile Cold Fusion ile yazılım
geliĢtirebilirler. Ancak yinede web de sınırlı sayıda yer
bulabilmiĢtir. Çünkü Cold Fusion sunucu ve yayınlama
anlamında bırakın PHP dilini ASP sitelerden bile çok çok
daha masraflıdır.
PHP Dilinin Kapasitesi
1. PHP Nesneye yönelik programlamayı destekler
buna sınıf ve kalıtım özellikleride dahildir.
2. PHP çoklu kalıtımı desteklemez. Bu konuda izlediği
yol java dili gibidir.
3. GeliĢmiĢ kontrol blokları ve hata yönetimi desteği
vardır.
4. Operatör ve fonksiyonlar arasında Ezme
(overloading) iĢlemine destek vermez.
5. GeliĢmiĢ bir eklenti sistemi vardır. Eğer C diline
yeterince aĢna iseniz rahatlıkla sizde eklenti
yazabilirsiniz.
Bunlar genel olarak PHP 5 ‗ten itibaren gelen özelliklerdir
ve bazıların PHP 4 için geçeri değildir.

PHP Dilinin Geçmişi

Php Programlama Dili
Php Dilinin Geçmişi
Rasmus Lerdorf, adlı genç bir mezun iĢ aradığını
belirtmek üzere sitesinde özgeçmiĢini yayınlıyordu. Bu
amaçla site yapmak üzere bir program geliĢtirdi. Yazdığı
program çoğunlukla PERL dilinden alınmıĢ yordamları
kapsıyordu. Buna PHP (Personal Home Page Tool) adını
verdi.
PHP adlı bu programın (KiĢisel Ana Sayfa) çok tutulması
üzerine Rasmus, bu programa, form yoluyla ziyaretçiden
gelen bilgileri iĢlemeyi sağlayan komut setlerinide ekledi
ve programın adı PHP/FI (Form Interpreter/Form
Yorumlayıcı) oldu. Kimileri programın bu sürümüne PHP2
dedi; ve bu ad, programın çok değiĢmesine ve
geliĢmesine rağmen uzun süre değiĢmeden kaldı.
Rasmus Lerdorf, 1995 ortalarında, Zeev Suraski, Stig
Bakken, Shane Caraveo ve Jim Winstead ‗inde katıldığı
bir grup ile PHP dilini yeniden tasarlayarak, Perl'den
ödünç alma rutinlerle iĢ yapan bir paket yerine, Nesne-
Yönelimli (Object-Oriented Programming) bir
programlama dili haline getirdi. PHP dili 3 sürümüne
geldiğinde bu defa geniĢletibilir yani extensible bir dil
oldu. Ayrıca sınırlı da olsa nesneye yönelik proglamlama
desteği kazanmıĢtı. Eklenti ve nesneye yönelik destek
sayesinde de önü daha da açıldı. Öyleki 18 ay önce
sadece 250.000 civarında web sunucuya yüklü olan PHP,
bu süre içinde bu sayıyı 2.500.000 web sunucuya
çıkarmıĢtı.

PHP 4 sürümüne geldiğinde ise çeĢitli geliĢtirmeler
resmen bariyerleri yerle bir etmiĢtir. Bunlar
 Zend Engine
 Sunucudan bağımsız çalıĢma
 Önce derle sonra çalıĢtır mantığı ile hız kazanma
 Nesneye yönelik programlama
 Multithreading
Zeev ve Andi ZEND adlı Ģirketi kurup PHP dilini kurumsal
ölçeğe taĢıdılar. GeliĢtilen Zend Engine ile PHP artık
referans sayma, hafıza yönetimi ve sunucudan bağımsız
çalıĢma yeteneği de kazanmıĢtı. Tabi veritabanı
bağlantılarının, dosyaların, hafıza boĢluklarının bu engine
ile kontrol edilebilir hale gelmeside cabası. Sunucudan
bağımsız çalıĢma derken PHP dilinin neredeyse bilinen
bütün web sunucularla ortak çalıĢabilir hale gelmesi
kastedilmektedir.
Ayrıca derleyici önceki sürümlerdeki ―bir satır oku,
yorumla, çalıĢtır, diğer satıra geç‖ mantığını bırakmıĢ,
önce tüm kodu okuyup, ardından derleme ve çalıĢtırma
yeteneğine kavuĢmuĢtur. Buda tabiî ki çeĢitli hızlandırma
mekanizmalarınıda beraberinde getirmiĢtir. Tabiî ki bu
çabalar sonuçsuz kalmamıĢ PHP bu sürümde kurulu
olduğu sunucu sayısını 9.500.000 ‗a taĢımıĢtır. En çok
kullanılan Apache sunucu modülü olma özelliği uzun
zamandır PHP‘dedir.
PHP 5 sürümünde artık dilin olgunlaĢma aĢamasına
gelinmiĢtir. Çünkü önceki PHP sürümleri büyük çaplı
projeler için biraz basit kalmakta idi. PHP 5, ile gelen
yenilikler ise
http://alikoker.name.tr
HTML-CSS–PHP–MYSQL ve SQL Derleme : Ġbrahim Halil Kutluay- 2007-2013
164
 try/catch
 XML
 Mysql Improved
 Sqlite
 Yeni bir SOAP eklentisi
olmuĢtur. PHP, Linux gibi, Açık Sistem (Open source)
kurallarına tabidir; isteyen programda istediği değiĢikliği
yapabilir; ancak bu değiĢiklikten para kazanamaz ve
yaptığı değiĢiklikleri isteyen herkese açıklamak
zorundadır. Dilin resmî adı "PHP: Hypertext
Preprocessor" (Hiper-metin ön-iĢleyici) olarak değiĢtirildi,
ve çeĢitli Web Server'ların PHP dili anlaması için gerekli
eklentiler yeniden üretildi.
PHP arkasında ASP yada JSP gibi kurumsal bir destek
olmamasına rağmen gerek performans gerek destek
açısından diğer Web yazılım geliĢtirme dilleri ile kolayca
yarıĢabilecek kapasitedir. Hemen her türlü iĢletim
sistemiyle çalıĢabilir olması ve yine açık kaynak
geliĢtirilen MYSQL ile birlikte gösterdikleri ikili
performans onları bir anda yazılım dünyasının gözdeleri
arasına sokmuĢtur.
Neden PHP
PHP dilinin web ortamında çok tercih ediliyor olmasının
sebepleri Ģunlardır.
 Platform ÇeĢitliliği (PHP nerdeyse bütün web server
ve iĢletim sistemleri ile çalıĢbilir)
http://alikoker.name.tr
HTML-CSS–PHP–MYSQL ve SQL Derleme : Ġbrahim Halil Kutluay- 2007-2013
165
 Yüksek Performans (PHP + Apache bir çok ortamda
oldukça hızlı çalıĢmaktadır)
 Veritabanı Uygulamaları Ġçin Ġdeal ve Birçok VTYS
ile ÇalıĢabilme Yeteneği
 Internet Standartlarına Uyum
 GeniĢletilmeye Müsait Yapı (PHP komut setine
eklenti yapabilme)
 GeliĢmiĢ Özellikler (Oturum yönetimi, çerez
kullanımı, PaylaĢımlı hafıza yönetimi
 Ekonomik (Bedavadan daha ucuz bir Ģey varsa
bilemeyiz)
Interaktif Web Sayfaları Hazırlamak Ġçin Yöntemler
Web sayfalarına dinanizm kazandırmanın iki yolu vardır.
Sunucu tarafındaki interaktif uygulamalar ve Kullanıcı
tarafındaki interaktif uygulamalar. Kullanıcı tarafındaki
uygulamalara örnek olarak Javascript veya VBscript ile
yapılan veri doğrulama iĢlemleri ve Java dilinde yazılmıĢ
appletleri sayabiliriz. Bunun avantajları;
 Sunucu tarafına yük bindirmez ve veri doğrulama
gibi kullanıcı tarafında halledilebilecek iĢlemler için
sunucuyu yormamıĢ olur
 Bant geniĢliğini etkin kullanma Ģöyleki sayfa bu
doğrulama iĢlemleri için sunucuya gidip geri
dönerken aynı zamanda internet bağlantısınıda
kullanmıĢ olmaktadır.
http://alikoker.name.tr
HTML-CSS–PHP–MYSQL ve SQL Derleme : Ġbrahim Halil Kutluay- 2007-2013
166
Sunucu tarafında çalıĢan uygulamalarında tabiî ki
kendine göre avantajları vardır…
 Web tarayıcılarında % 100 bir standart
olmadığından scritplerin her tarayıcıda çalıĢacağı
garanti değildir. Örneğin Vbscript sadece Internet
Explorer ile çalıĢır.
 Kullanıcı güvenlik gerekçesiyle script çalıĢtırmayı
tamamen iptal etmiĢ olabilir.
 Kullanıcıda yüklü JRE sürümü alt sürüm ise bazı
appletleri çalıĢtıramayabilir.
 Bazı iĢlemler mutlaka sunucu tabanlı olmak
zorundadır. Örneğin iĢletim sistemine ait bir komut
karĢıda çalıĢtırılmak zorundadır. Yine aynı Ģekilde
veritabanı iĢlemleride sunucuda mantıken çalıĢmak
zorundadır.
 Sunucuda çalıĢan bir uygulamayı güncellemek
daha kolaydır.
 Sunucuda çalıĢmakta bazen bant geniĢliğine
faydalıdır. Örneğin siz sunucuya sadece bir sorgu
gönderirsiniz. Sonucu size buna uygun kayıtları
gönderir. Tüm kayıtları gönderip, kullanıcı
tarafındaki bir uygulama bu süzme iĢlemini
yapacak olursa çok daha fazla bant geniĢliği
kullanılır.
Günümüzde yazılım geliĢtiren kiĢilerin rotası genel olarak
istemci-sunucu modeline doğru gitmektedir. Böylece
Ģirketler veri bütünlüğünü kontrol etme konusunda gücü
ellerinde tutmaktalar.