php ne demek?

PHP : Hypertext Preprocessor (Türkçe: Üstünyazı Önişlemcisi 1) (Aslen: Personal Home Page - Kişisel Ana Sayfa) , internet için üretilmiş, sunucu taraflı, çok geniş kullanımlı, genel amaçlı, içerisine HTML gömülebilen betik ve programlama dilidir2. İlk kez 1995 yılında Rasmus Lerdorf tarafından yaratılan PHP'nin geliştirilmesi bugün PHP topluluğu tarafından sürdürülmektedir. Ocak 2013 itibarıyla 244 milyondan fazla web sitesi PHP ile çalışırken 2.1 milyon web sunucusunda PHP kurulumu bulunmaktadır.3

PHP kodları PHP işleme modülü bulunan bir web sunucusu tarafından yorumlanır ve çıktı olarak web sayfası üretilir. Bu kodlar veriyi işlemek üzere harici bir dosyaya kaydedilerek çağırılabildiği gibi doğrudan HTML kodunun içine de gömülebilir. PHP zaman içinde bir komut satırı arayüzü sunacak şekilde evrilmiştir, PHP-GTK yardımıyla grafiksel masaüstü uygulaması geliştirmek de mümkündür.4

PHP özgür bir yazılım olup PHP Lisansı ile dağıtılmaktadır. Bu lisans kullanım şartları kısmında GNU Genel Kamu Lisansı ile örtüşmese de, PHP tüm web sunuculara ve hemen hemen tüm işletim sistemi ve platforma ücretsiz olarak yüklenebilir.5

Tarihçe

PHP'nin geliştirilmesi 1994 yılında Rasmus Lerdorf'un kişisel web sitesini yönetmek için bir takım CGI (İngilizce: Common Gateway Interface) Perl betikleri yazmasıyla başladı. Rasmus bu betikler yardımıyla özgeçmişini sitede görüntülüyor ve sitenin ziyaretçi trafiğini kaydediyordu. Bir süre sonra web formları ile etkileşime girebilecek, veritabanları ile iletişim kurabilecek ve daha hızlı çalışabilecek şekilde bu betikleri C ile yeniden kodladı ve bu uygulamaya Kişisel Ana Sayfa/Form Yorumlayıcı (PHP/FI, İngilizce: Personal Home Page/Forms Interpreter) adını verdi. PHP/FI yardımıyla basit anlamda dinamik web siteleri oluşturmak oldukça kolaydı. Rasmus, 8 Haziran 1995 tarihinde hata ayıklama sürecini hızlandırmak ve kaynak kodu iyileştirmek üzere bir Usenet tartışma grubunda PHP/FI uygulamasını Personal Home Page Tools (PHP Tools) adıyla ilk kez duyurdu. 2013 yılı itibarıyla PHP içinde mevcut olan Perl benzeri değişken tanımlama, form yönetimi ve betik kodları arasına HTML kodu yerleştirebilme gibi temel özellikler bu ilk sürümde de mevcuttu. Sözdizimi genel olarak Perl'e benzese de daha kısıtlı ve basit ancak daha tutarsızdı. Bir geliştirme takımıyla aylar süren çalışma ve test aşamalarının ardından PHP/FI 2 sürümü 1997 Kasım ayında resmi olarak duyuruldu.

Zeev Suraski ve Andi Gutmans 1997 yılında ayrımlayıcı'yı baştan yazdılar ve dilin ismini PHP: Hypertext Preprocessor olarak değiştirerek PHP 3 ün temellerini attılar. Bunu PHP 3 ün herkese açık olan test sürecinin başlaması izledi ve 1998 yılının Haziran ayında PHP 3 resmi olarak duyuruldu. Suraski ve Gutmans bu sürecin ardından PHP'nin çekirdeğini sil baştan kodlamak suretiyle 1999 yılında Zend Motorunu geliştirdiler ve İsrail'in Ramat Gan kentinde Zend Technologies isimli bir şirket kurdular.6

22 Mayıs 2000 tarihinde temelleri Zend Engine 1.0 ile güçlendirilmiş PHP 4 duyuruldu ve Ağustos 2008 itibarıyla 4.4.9 sürümüne ulaşana kadar aktif olarak geliştirildi.7 Bugün PHP 4 ün geliştirilmesi durdurulmuştur ve güvenlik güncellemeleri dahil olmak üzere üzerinde hiçbir iyileştirme yapılmamaktadır.

13 Temmuz 2004 tarihinde yeni Zend Engine II ile güçlendirilmiş PHP 5 yayınlandı. PHP 5, nesneye yönelik programlama için çok daha fazla olanak sağlıyor, PHP Veri Nesneleri (PDO) eklentisi yardımıyla veritabanlarına erişim için oldukça tutarlı ve hızlı bir arayüz yanında performansa yönelik çok sayıda iyileştirme barındırıyordu.8 2008 yılında PHP 4 ün tutarlı sürümünün yayınlanması durduruldu ve PHP 5 geliştirilmesi devam eden tek tutarlı sürüm oldu. PHP duruk içselleştirim (İngilizce: Late static binding) özelliği barındırmıyordu ancak 5.3 sürümü ile bu önemli eksik giderildi.9

Sürüm geçmişi

Anlamı
KırmızıEski sürüm, desteklenmiyor
SarıEski sürüm, hala destekleniyor
YeşilMevcut sürüm
MaviGelecek sürüm ya da BETA, ALFA sürüm
<table> <thead> <tr class="header"> <th><p>Ana Sürüm</p></th> <th><p>Ek Sürüm</p></th> <th><p>Yayın Tarihi</p></th> <th><p>Notlar</p></th> </tr> </thead> <tbody> <tr class="odd"> <td><p>1</p></td> <td><p>1.0.0</p></td> <td></td> <td><p>"Personal Home Page Tools(Kişisel Anasayfa Araçları)" olarak anılıyordu ve kısaltımı "PHP" idi.</p></td> </tr> <tr class="even"> <td><p>2</p></td> <td><p>2.0.0</p></td> <td></td> <td><p><a href="Yaratıcı" title="wikilink">Yaratıcısı</a> ve <a href="geliştirici" title="wikilink">geliştiricisi</a> "en hızlı ve en sade araç" olarak, <a href="Web_sayfası" title="wikilink">web sayfaları</a> için geliştirdi.</p></td> </tr> <tr class="odd"> <td><p>3</p></td> <td><p>3.0.0</p></td> <td></td> <td><p>Sürüm kişisellikten, kurumsallığa geçti. <a href="Zeev_Suraski" title="wikilink">Zeev Suraski</a> ve <a href="Andi_Gutmans" title="wikilink">Andi Gutmans</a> tekrar basit dil bilgisini yazdı.</p></td> </tr> <tr class="even"> <td><p>4</p></td> <td><p>4.0.0</p></td> <td></td> <td><p>Daha ileri seviye dil bilgisi eklendi/Zend Motoru denilen dil bilgisi denetleyicisi getirildi.</p></td> </tr> <tr class="odd"> <td><p>4.1.0</p></td> <td></td> <td><p>'Süper globaller' tanıştırıldı. (<code>$_GET</code>, <code>$_POST</code>, <code>$_SESSION</code>, <code>$_SERVER</code> vb...)</p></td> <td></td> </tr> <tr class="even"> <td><p>4.2.0</p></td> <td></td> <td><p>register_globals öntanımlı olarak engellendi.</p></td> <td></td> </tr> <tr class="odd"> <td><p>4.3.0</p></td> <td></td> <td><p><a href="Command-line_interface" title="wikilink">CLI</a> tanıştırıldı, <a href="Common_Gateway_Interface" title="wikilink">CGI</a> ekleri yapıldı.</p></td> <td></td> </tr> <tr class="even"> <td><p>4.4.0</p></td> <td></td> <td><p><code>phpize</code> ve <code>php-config</code> betikleri için eklenmeler yapıldı.</p></td> <td></td> </tr> <tr class="odd"> <td><p>4.4.8</p></td> <td></td> <td><p>Çoğu güvenlik sorunları ve hatalar düzeltildi. Son kalıcı PHP 4 sürümü oldu. Gerekli ise, güvenlik güncellemeleri 2008-08-08 e kadar sürdü.</p></td> <td></td> </tr> <tr class="even"> <td><p>4.4.9</p></td> <td></td> <td><p>Daha fazla açık onarıldı. PHP 4 serileri için son sürüm oldu.</p></td> <td></td> </tr> <tr class="odd"> <td><p>5</p></td> <td><p>5.0.0</p></td> <td></td> <td><p>Zend Motoru II ile yeni obje modelleri geliştirildi.</p></td> </tr> <tr class="even"> <td><p>5.1.0</p></td> <td></td> <td><p>Eklenen değişkenler ile performans artışı gözlemlendi.</p></td> <td></td> </tr> <tr class="odd"> <td><p>5.2.0</p></td> <td></td> <td><p>Filtreleme öntenımlı olarak iptal edildi.</p></td> <td></td> </tr> <tr class="even"> <td><p>5.2.11</p></td> <td></td> <td><p>Hata ve güvenlik sorunları çözüldü.</p></td> <td></td> </tr> <tr class="odd"> <td><p>5.2.12</p></td> <td></td> <td><p>Güvenlik ve veri tabanı iletişimi güçlendirildi. 60 adet hata düzeltildi.</p></td> <td></td> </tr> <tr class="even"> <td><p>5.2.13</p></td> <td></td> <td><p>Hatalar düzeltildi.</p></td> <td></td> </tr> <tr class="odd"> <td><p>5.2.14</p></td> <td></td> <td><p>Hatalar düzeltildi. PHP 5.2.x sürümleri geliştirilmesi durduruldu.</p></td> <td></td> </tr> <tr class="even"> <td><p>5.3.0</p></td> <td></td> <td><p><a href="Namespace" title="wikilink">Namespace</a> desteği, Atlama kodları (<a href="goto" title="wikilink">goto</a> ile limitlendi), Yerli PHP arşivlemesi (phar),<a href="Microsoft_Windows" title="wikilink">Windows</a> desteği arttırıldı, sqlite3 geliştirildi, fileinfo, mime_magic yerine daha iyi bir <a href="MIME" title="wikilink">MIME</a> desteği için getirildi, uluslararası olarak "<em>ereg</em>" kod yapısı iptal edildi.</p></td> <td></td> </tr> <tr class="odd"> <td><p>5.3.1</p></td> <td></td> <td><p>100'den fazla hata düzeltildi, bazı küçük sorunlar da düzeltildi.</p></td> <td></td> </tr> <tr class="even"> <td><p>5.3.2</p></td> <td></td> <td><p>Çok geniş bir hata düzeltimi yapıldı.</p></td> <td></td> </tr> <tr class="odd"> <td><p>5.3.3</p></td> <td></td> <td><p>Başlıca hata ve güvenlik sorunları onarıldı. <a href="http://php-fpm.com">FPM</a></p></td> <td></td> </tr> <tr class="even"> <td><p>5.4</p></td> <td></td> <td><p>Trait desteği geldi, diziler için kısa sözdizimi desteği geldi. Register_globals, safe_mode, allow_call_time_pass_reference konfigürasyon değerleri session_register(), session_unregister() ve session_is_registered() metotları ile birlikte kaldırıldı. Dahili web sunucu desteği eklendi. Bellek kullanımı düşürüldü, mevcut fonksiyonelite üzerinde performansı artıran çok sayıda iyileştirme yapıldı.</p></td> <td></td> </tr> <tr class="odd"> <td><p>5.5</p></td> <td></td> <td><p>Yeni makine kodu önbellekleme eklentisi (Zend Optimizer+) geldi. GD resim işleme kütüphanesine yeni fonksiyonlar eklendi. Parola şifreleme işlemlerini kolaylaştırmak ve daha üst seviyede güvenlik sunmak üzere password_hash() ve password_verify() metotları geldi. try {} catch() {} sözdizimine diğer üst seviye dillerde bulunan finally bloğu eklendi.</p></td> <td></td> </tr> <tr class="even"> <td><p>5.6</p></td> <td></td> <td><p>Belirsiz sayıda parametre alan fonksiyonlar (variadic functions), sabitlere (const) numerik işlemlerle (+, -, * ...) tanım yapabilme, üs alma operatörü (**) eklendi.</p></td> <td></td> </tr> <tr class="odd"> <td><p>7</p></td> <td><p>7.0</p></td> <td><p>2015-12-03</p></td> <td><p><a href="Zend_Engine" title="wikilink">Zend Engine 3.0</a> ile önceki sürümlere göre performansı önemli derecede arttırıldı<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a>. <a href="??_Operatörü" title="wikilink">?? Operatörü</a>, <code>&lt;=&gt;</code> üç yollu karşılaştırma operatörü ve anonymous sınıflar eklendi. <a href="Unicode" title="wikilink">Unicode</a> desteği geldi.</p></td> </tr> <tr class="even"> <td><p>7.1</p></td> <td><p>2016-12-01</p></td> <td><p><a href=":en:Void_type" title="wikilink">Void tipi</a> eklendi, sınıf sabitlerini (const) <a href="kapsülleme" title="wikilink">kapsülleme</a>, boşaltılabilir (nullable) tip, birden fazla hata (exception handling) yakalayabilme.<a href="#fn2" class="footnote-ref" id="fnref2" role="doc-noteref"><sup>2</sup></a></p></td> <td></td> </tr> <tr class="odd"> <td><p>7.2</p></td> <td><p>2017-11-30</p></td> <td><p><a href=":en:Object_Type" title="wikilink">Object tipi</a> eklendi, abstract metodlar artık override edilebiliyor.<a href="#fn3" class="footnote-ref" id="fnref3" role="doc-noteref"><sup>3</sup></a></p></td> <td></td> </tr> <tr class="even"> <td><p>7.3</p></td> <td><p>2018-12-06</p></td> <td><p>is_countable fonsiyonu, Esnek Heredoc ve Nowdoc Sözdizimleri <a href="#fn4" class="footnote-ref" id="fnref4" role="doc-noteref"><sup>4</sup></a></p></td> <td></td> </tr> <tr class="odd"> <td><p>7.4</p></td> <td><p>2019-11-28</p></td> <td><p>Ok fonksiyon, ön yükleme, sınıflarda tip özelliği, geliştirilmiş tip varyansları, dizilerde dağıtma operatoru, null işaretleme operatörü <a href="#fn5" class="footnote-ref" id="fnref5" role="doc-noteref"><sup>5</sup></a></p></td> <td></td> </tr> <tr class="even"> <td><p>rowspan="3" row |8</p></td> <td><p>8.0</p></td> <td><p>2020-12-3</p></td> <td><p>İsimli parametreler, <em>union</em> türleri, nitelikler, <em>constructor</em> nitelik promosyonu, <em>nullsafe</em> operatörü, <em>match</em> ifadesi, JIT(<em>Just in Time</em>), <em>static</em> türünde değer döndürme, <em>mixed</em> türü, <em>throw</em> ifadesi, nesnelerde <em>::class</em> sözdizimi, <em>try-catch</em> sözdiziminin hata değişkeni belirtmeden kullanımı, parametre listelerinin sonunda virgül kullanımı, <em>string</em> değişkenlerde otomatik <em>Stringable</em> arayüze geçiş, <em>str_contains()</em> fonksiyonu, <em>str_starts_with()</em> ve <em>str_ends_with()</em> fonksiyonları, <em>string</em> birleştirme önceliği.<a href="#fn6" class="footnote-ref" id="fnref6" role="doc-noteref"><sup>6</sup></a><a href="#fn7" class="footnote-ref" id="fnref7" role="doc-noteref"><sup>7</sup></a></p></td> </tr> <tr class="odd"> <td><p>8.0.1</p></td> <td><p>2021-01-07</p></td> <td><p>Bazı hatalar giderildi.<a href="#fn8" class="footnote-ref" id="fnref8" role="doc-noteref"><sup>8</sup></a></p></td> <td></td> </tr> <tr class="even"> <td><p>8.0.2</p></td> <td><p>2021-02-04</p></td> <td><p>Bazı hatalar giderildi.<a href="#fn9" class="footnote-ref" id="fnref9" role="doc-noteref"><sup>9</sup></a></p></td> <td></td> </tr> </tbody> </table> <section class="footnotes footnotes-end-of-document" role="doc-endnotes"> <hr /> <ol> <li id="fn1" role="doc-endnote"><a href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></li> <li id="fn2" role="doc-endnote"><a href="#fnref2" class="footnote-back" role="doc-backlink">↩︎</a></li> <li id="fn3" role="doc-endnote"><a href="#fnref3" class="footnote-back" role="doc-backlink">↩︎</a></li> <li id="fn4" role="doc-endnote"><a href="#fnref4" class="footnote-back" role="doc-backlink">↩︎</a></li> <li id="fn5" role="doc-endnote"><a href="#fnref5" class="footnote-back" role="doc-backlink">↩︎</a></li> <li id="fn6" role="doc-endnote"><a href="#fnref6" class="footnote-back" role="doc-backlink">↩︎</a></li> <li id="fn7" role="doc-endnote"><a href="#fnref7" class="footnote-back" role="doc-backlink">↩︎</a></li> <li id="fn8" role="doc-endnote"><a href="#fnref8" class="footnote-back" role="doc-backlink">↩︎</a></li> <li id="fn9" role="doc-endnote"><a href="#fnref9" class="footnote-back" role="doc-backlink">↩︎</a></li> </ol> </section>

Ek bilgiler

PHP, özellikle mysql veritabanıyla birlikte ve Linux işletim sistemi altında iyi bir performans sergilemektedir. C/C++ diline olan benzerliği nedeniyle bu dili önceden bilenlerin PHP öğrenmesi oldukça kolaydır. Kolay öğrenilmesi ve hızlı performansı nedeniyle Facebook, YouTube, Yahoo, Wikipedia ve OGame gibi dünyaca ünlü sitelerin yazımında kullanılmasına rağmen, kodların kolay anlaşılabilmesi açısından ve birden fazla programcı tarafından sürekli geliştirilmesi gerekli büyük projelerde Java'nın kullanılması daha uygun görülmektedir. Ancak sadece web tabanlı yazılımın geliştirilmesi söz konusu olduğunda Java'ya göre öğrenilmesinin daha kolay olması nedeniyle genellikle PHP tercih edilmektedir. PHP, web tasarımında önemli kolaylıklar sağlasa da 2005 te Google in AJAX kullanmaya başlamasından sonra tek başına öğrenilmesi yeterli olmamakta ve AJAX'ı öğrenmek için gerekli JavaScript, XML, HTML, (ve CSS) ile birlikte bir bütün oluşturabilmektedir.

Geliştiriciler

Önemli PHP Geliştiricileri
Rasmus Lerdorf
Danimarka asıllı Kanadalı, programcı. PHP'nin mucidi ve geliştiricisi. 2002'den beri Yahoo Şirketi için çalışmakta. Aynı zamanda Apache HTTP Sunucusu projesinin başlamasını sağladı. Joomla! gibi GNU PHP projelerin güvenliğini kontrol ediyor.

Program dizimi

Aşağıdaki örnek programda HTML içerisine gömülü PHP kodunu görebilirsiniz.

<!DOCTYPE html>
<html>
    <head>
        <title>PHP Testi</title>
    </head>
    <body>
        <?php echo '<p>Merhaba Dünya</p>'; ?>
    </body>
</html>

Unutmayın ki PHP kodunun HTML içerisinde gömülü olması zorunlu değildir. Benzeri bir program aşağıdaki gibi yazılabilir.

 <?='Hello world' ?>

Fonksiyonlar

PHP yazılımı büyük bir fonksiyon kütüphanesi ile birlikte gelir. Gömülü fonksiyonların haricinde kendi fonksiyonunuzu aşağıdaki gibi tanımlayabilirsiniz.

<?php
function yasimiGetir($dogumYili) {
    $yas = date('Y') - $dogumYili;
    return $yas;
}

echo yasimiGetir(1981) . ' yaşındayım.';
?>
<?php
function topla($a, $b){
    return $a + $b;
}

echo topla(5, 10); //15
?>

Ayrıca bakınız

Kaynakça

Dış bağlantılar

Orijinal kaynak: php. Creative Commons Atıf-BenzerPaylaşım Lisansı ile paylaşılmıştır.

Footnotes

Kategoriler