PHP ye Giriş. Hidayet Doğan



Benzer belgeler
PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

1.PROGRAMLAMAYA GİRİŞ

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

PHP 1. Hafta 1. Sunum

Bölüm 10: PHP ile Veritabanı Uygulamaları

Öğr. Gör. Serkan AKSU 1

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

İnternet Programcılığı Öğr. Gör. Serkan AKSU Statik ve Dinamik Web Siteleri. Dinamik Web Sitesi Nedir?

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

İnternet Programcılığı

Internet Programming II

Üst Düzey Programlama

WEB PROGRAMLAMA. PHP Temelleri 2. Dr. Erman Yukselturk

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

Veri Tabanı-I 1.Hafta

PHP ile İnternet Programlama

08220 Internet Programcılığı II

1 APACHE SERVER KURULUMU 1 Kurulum 1 Apache Ayarları (httpd.conf) 6 PHP Ayarlaları (php.ini) 7 PHP5.4 Yükseltme 8 phpmyadmin Yükseltme 10

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

BİL-142 Bilgisayar Programlama II

1 PROGRAMLAMAYA GİRİŞ

Bu makalede 2003 sunucu, Windows 2003 Server anlamına gelmektedir. Aşağıda yapılan işlemler 2003 R2 sunucu üzerinde denenmiş ve çalıştırılmıştır.

Temel Bilgisayar Programlama

Yukarıdaki örnekte görüldüğü üzere her php komut satırı noktalı virgül (;) ile biter.

Neden PHP? Tasarımcı, şirket ve kullanıcı gözüyle. 10 Ekim 2005 / DEÜ DESEM Seval ÖZBALCI 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

İNTERNET PROGRAMCILIĞI - II

Ç NDEK LER G R fi 1 Bafllamadan Önce 1 Kitab Kimler Okumal? 1 Kitap çerisindeki Örnekler 2 Örneklerin Kullan m 3 Çekinmeden Yaz n 7

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109

4. Bölüm Programlamaya Giriş

PHP 1. Hafta 2.Sunum

PHP & MYSQL İLE İNTERNET PROGRAMCILIĞI

PHP Programlamaya Giriş

PASCAL PROGRAMLAMA DİLİ YAPISI

PHP kodları çoğu zaman HTML kodları arasına gömülü olarak yazıldığından öncesinde HTML kodlarınının bilinmesinde fayda vardır.

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

çindekiler 01. Kurulum

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

R ile Programlamaya Giriş ve Uygulamalar

ALGORİTMA VE PROGRAMLAMA I

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Hızlı Başlangıç Kılavuzu

Python GELECEK. Barış Metin Linux Sistemleri. Python Programlama Dili

Algoritma ve Akış Diyagramları

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

ÖĞRENME-ÖĞRETME YÖNTEM VE TEKNİKLERİ. gösterip yaptırma, uygulamalı çalışma. Anlatım, soru-cevap, gösterip yaptırma, uygulamalı çalışma.

Üst Düzey Programlama

Üst Düzey Programlama

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

PHP Programlama 1. Bölüm. Tolga GÜYER

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

C# nedir,.net Framework nedir?

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

PHP ile Programlama (I/III)

ÖZGÜR YAZILIMLAR İLE J2EE

Linux'ta Kabuk ve Kabuk Programlama

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Şişli Mesleki ve Teknik Anadolu Lisesi Web Programcılığı Dalı 2014 WEB PROGRAMCILIĞI DALI

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

Metin Editörleri YRD. DOÇ. DR. ENGİN CEMAL MENGÜÇ. ALINTI:

Veri Tabanı Yönetim Sistemleri Bölüm - 02

İNÖNÜ ÜNİVERSİTESİ MALATYA MESLEK YÜKSEKOKULU DERS TANITIM FORMU. Kredisi AKTS Eğitim Dili Tipi: Zorunlu/ Saat

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Disk Alanı 100 Mb Mb Mb Mb Mb Mb. Aylık Trafik (Bandwidth) 1 Gb 5 Gb 10 Gb 15 Gb 25 Gb 35 Gb

HSancak Nesne Tabanlı Programlama I Ders Notları

Asp.Net Veritabanı İşlemleri

Programlama Dillerinde Kullanılan Veri Tipleri

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

WebInstaller. 1. Kurulum Đçin Gereksinimler

VERİ TABANI UYGULAMALARI

Basit bir web uygulaması

WAMP SERVER KURULUMU

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

SEKTÖREL ÇÖZÜM GELİŞTİRME YÖNTEMLERİ

Programlama Yazılımı ile Web Sitesi Oluşturma

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

BMT 101 Algoritma ve Programlama I 2. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

İnternet Programcılığı Dersi 2.Dönem Ders Notu

Veritabanı. Ders 2 VERİTABANI

KURUMSAL PORTAL TASARIMI

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

08217 Internet Programcılığı I Internet Programming I

Bilgisayar Programlama

Internet Programming II

Php İle Mysql Veritabanından Bilgi Çekme

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

Javascript Geliştiricileri İçin Xaml Ve Microsoft Silverlight

1 JAVASCRIPT NEDİR? 1

İNTERNET PROGRAMCILIĞI DERSİ

Web Uygulama Güvenliği Kontrol Listesi 2010

Transkript:

PHP ye Giriş Hidayet Doğan Türkiye PHP Grubu hdogan@hido.net Özet: PHP genellikle web programlama için kullanılan ve dünyada geniş bir kullanıma sahip, P dilleri ailesinden bir betik dilidir. Derleyicisi olmayan PHP betikleri çalışması için bir yorumlayıcıya ihtiyaç duyar. Yazım kuralları kendine has olmakla beraber C ve Perl dillerine benzemektedir. Öğrenimi kolay ve programlamayı hızlandıran basit bir yapıya sahiptir. Genellikle web programlama için kullanıldığından ötürü HTML içine gömülebilir bir yapıdadır. Dil yapısı ve özellikleri ilk sürümlerinden sonra hızlıca gelişerek nesneye dayalı bir yapıya da bürünmüştür. Birçok yardımcı fonksiyon, eklenti ve kütüphanesi bulunan PHP dili bilindik işletim sistemleri ve web sunucuları üzerinde sorunsuz ve kararklı bir şekilde çalışabilmektedir. Bilindik ve milyonlarca sitenin hazırlanmasında kullanılmış, üzerine birçok kitap yazılmış ve çevirimiçi, çevirimdışı kaynağa sahip olan, gelişimine ve güncellenmesine devam eden bir dildir. Anahtar Sözcükler: php, web, programlama, betik 1. Tarihi 1995 yılında Rasmus Lerdorf isimli yazılımcı tarafından basit Perl betikleri seti olarak kendi özgeşmişine web üzerinden yapılan erişimleri takip etmek amaçlı oluşturulmuştur. Rasmus Lerdorf bu betik setine ilk başta "Personal Home Page Tools" (Kişisel Sayfa Araçları) ismini vermiştir. İleriki zamanlarda bu set içerisine gereksinim duyduğu özellikleri C dili ile tekrar uyarlayarak PHP/FI (PHP Form Interpreter) ismi ile kaynak kodunu yayınlamıştır. PHP/FI ismi içindeki FI (Form Interpreter) kısaltması web formlarının yorumlanmasından ötürü verilmiş bir isimdir. Bu ilk sürüm ile birlikte HTML içine gömülebilir bir dil ortaya çıkmıştır. 1997 yılında PHP/FI kaynak kodları tekrar yazılmış ve PHP sürüm 3'e ait deneme sürümleri yayınlanmıştır. 1998 yılında PHP sürüm 3 yayınlanmış ve şu anki PHP sürümlerine yakın ve birçok yeni özelliği, eklentiyi barındıran bir sürümdür. Andi Gutmans ve Zeev Suraski isimli iki yazılımcı PHP sürüm 3 kaynak kodlarını tekrar yazarak, daha performanslı ve modüler bir yapıya sahip yeni bir altyapı oluşturmuş ve buna "Zend Engine" ismini vermiştir. 2000 yılında yeni altyapıyı kullanan PHP sürüm 4 yayınlanmıştır. PHP sürüm 4 ile birlikte daha geniş web sunucu desteği ve nesneye dayalı programlama desteği getirilmiştir. Andi Gutmans ve Zeev Suraski, İsrail merkezli "Zend" isimli bir firma kurarak, Zend Studio, Zend Server ve Zend Guard gibi lisanslı PHP ürünleri üretmektedirler ve PHP için sertifikalandırma (Zend Certification) hizmeti vermektedirler. [1] 2004 yılının ortalarında Zend Engine sürüm 2 ile birlikte PHP sürüm 5 yayınlanmış ve yeniden tasarlanan nesneye dayalı model ve eklenti ile beraber gelmiştir. Şu anda PHP sürüm 5.4 üzerinde çalışmakta olan geliştirme ekibi nesneye dayalı model üzerine ek geliştirmeler ve daha önce oraya çıkabilecek güvenlik açıkları ile ilgili katı değişiklikler yapmaktadırlar. [2] 2. Kurulum ve Çalıştırma Özellikle PHP sürüm 4 ile birlikte birçok web sunucusu ve işletim sistemi üzerine

çalışabilen PHP dili; Apache, IIS, Lighttpd ve Nginx gibi büyük kullanım oranına sahip web sunucuları üzerinde basitçe kurulabilmekte ve kararlı bir şekilde çalışmaktadır. Büyük bir oranla Linux işletim sistemi üzerinde kurulan ve çalışan PHP; Microsoft Windows, Microsoft Windows Server ailesi üzerine de basitçe kurabilen ve yeni Intel tabanli Mac OS işletim sistemi üzerinde kurulu gelen bir dildir. Linux dağıtımları için hazır kurulum paketleri bulunmaktadır ve Microsoft Windows üzerinde, IIS web sunucusu için de Zend ve Microsoft ortaklığı ile hazırlanmış hazır bir kurulum paketi bulunmaktadır. [3][4] Özellikle geliştirme süreci için kurulum sürecini hızlandıran ve Windows işletim sistemi için hazırlanmış üçüncü parti yazılımlar da mevcuttur. Kaynak kodu açık dağıtılan PHP, kaynaktan derlenerek te kurulabilir. PHP dili komut satırından veya web sunucusu üzerinde yorumlanarak çalıştırılabilir. Komut satırında "php" komutu ile çalıştırılır. Web sunucuları üzerinde ise bir yorumlayıcı (PHP interpreter) olarak görev alır. Bu yorumlayıcı web sunucusu tarafından çalıştırılır ve yorumlayıcının verdiği sonuç ziyaretçinin tarayıcısına gönderilir. 3. Yazım Kuralları ve Dilin Özellikleri PHP ile hazırlanmış bir betik dosyası PHP yorumlayıcısı tarafından, diğer betik dillerindeki gibi üstten alta ve soldan sağa doğru satırlar yorumlanır ve çalıştırır. Yorumlanma sırasında oluşan yazım hataları bildirilir. Genellikle web sunucusu üzerinde çalışan PHP betikleri ".php" uzantısını alır. PHP olarak yorumlanacak dosya uzantısı web sunucusu ayarlarına göre değişebilir veya değiştirilebilir. Yazım kuralları oldukça basit ve C, Perl gibi dillere benzerliği olan PHP dili herhangi bir metin düzenleyici kullanılarak oluşturulabilir. [5] Kısaca yazım kuralları şöyledir: HTML içine gömülebilir bir yapıya sahip olduğundan betik içinde PHP kodları <?php ayracı ile?> ayracı arasına alınır. Eğer betikten sonra herhangi bir HTML kodu (ya da ekrana bir çıktı) verilmeyecekse kapatma ayracı, yani?> ayracı kullanılmayabilir. Değişken türlerini belirtmeye gerek yoktur. Değişken isimleri $ (dolar) işareti ile başlar. Değişken isimleri - (tire) işareti içeremez. Değişken isimleri rakam ile başlayamaz. Kod blokları { ve } sembolleri arasına alınır. Kod içinde bulunan yorumlar /* ve */ ayraçları arasına alınır veya yorum olarak yazılacak satır başına // veya # işaretleri eklenir. Birçok dilde benzer olarak kullanılan ve mantıksal işlemlerin yapıldığı; "if", "else", "for", "foreach", "do", "while", "return", "break", "continue" gibi komutları bulunmaktadır. PHP sürüm 5.3 ile birlikte "goto" komutu da eklenmiştir. Komutlar arasında PHP diline özgün olan "echo" komutu bulunmaktadır ve ekrana çıktı vermek için kullanılmaktadır. Bunlara ek olarak diğer dillerde de görebileceğimiz "include" (başka bir dosyayı dahil etme) komutu ve ek olarak dahil edilecek dosyanın varlığını kontrol eden "require" komutu bulunmaktadır. Prosedürel dillerde aşina olunan fonksiyonlar "function" komutu ile tanımlanırlar. Şekil 1'de yazım kurallarını anlamak açısında

Bunlara ek olarak modülüs ismini verdiğimiz ve % (yüzde) sembolü ile ifade edilen bir operatör bulunmaktadır. Bu operatör bölüm işleminden sonra kalan kısmını ifade etmek için kullanılır. Aritmetik işlemlerde yapılacak işlemin sırası cebir kurallarında da olduğu gibi önce parantez içlerinde bulunan işlemler gerçekleştirilir. Çarpma ve bölme işlemi de öncelikli olarak gerçekleştirilir. Şekil 1: Örnek PHP betiği. Şekil 2'de HTML içine gömülebilirliği gösteren Değişkenlere herhangi bir değer atama işlemi için = (eşit) operatörü kullanılır. Şekil 3'te aritmetik ve atama işlemleri için Şekil 3: Örnek PHP betiği: aritmetik işlemler. Programın yapısını oluşturulan koşullar içinde karşılaştırmalar yapabilmek için yine benzer sembollerle ifade edilen koşul operatörleri kullanılır. Bunlar aşağıdaki Tablo 1'de gösterilmiştir. Şekil 2: Örnek PHP betiği: HTML içine gömülebilirlik. Aritmetik işlemleri, koşulları ve karşılaştırmaları ifade etmek için kullanılan operatörler hepimizin okulda öğrenmiş olduğu aritmetik sembollere benzer şekilde kullanılır. Bunlar; Toplama işlemi için + (artı) operatörü, Çıkarma işlemi içim - (eksi/tire) operatörü, Çarpma işlemi için * (yıldız) operatörü, Bölme işlemi için / (eğik cizgi) operatörü. Eşit = Eşit Değil!= Büyük > Küçük < Büyük Eşit >= Küçük Eşit =< Denk (veri türü de aynı) === Denk Değil (değeri veya veri türü!=== farklı) Tablo 1: Koşul operatörleri. PHP dilinde içerisinde birden fazla değer barındırabilen dizi (array) ismini verdiğimiz değişken türleri bulunmaktadır. Bunları değişken kümesi olarak ta düşünebiliriz. Bu tür değişkenleri tanımlamak için birden fazla yöntem bulunmaktadır. Şekil 4'te bulunan örnekte dizilerin farklı şekillerde nasıl

tanımlanacağı ve dizi içindeki değerlere erişimin nasıl yapılacağı görülebilir. Şekil 4: Örnek PHP betiği: dizilerin kullanılması ve dizi elemanlarına erişim. Neseneye dayalı model ile birlikte gelen sınıflar ise "class" komutu ile tanımlanırlar. PHP sürüm 5.3 ile birlikte nesneye dayalı model altyapısına "namespace" (isim uzayı) yapısı eklenmiştir. Böylelikle birinden farklı işlemler yapan fakat aynı isimleri alan sınıflar bir öbek altında toplanabilir hale getirilmiştir. PHP'de nesneye dayalı model kapsamında "exception" (hata yakalama/ayıklama) kavramı ve "magic method" (sihirli yöntemler) bulunmaktadır. Sihirli yöntemler sınıfın oluşturulmasında, silinmesinde, özelliklerini atamada veya çağırmada ve buna benzer birçok sınıf ile iligli işlemlerde otomatik olarak tetiklenen ve çalıştırılan yöntemlerdir. Şekil 5'de sınıfların tanımlanması ve sihirli yöntemlerle iligli Şekil 5: Örnek PHP betiği: sınıfların kullanılması ve sihirli yöntemler. PHP dilinde nesneye dayalı model içinde görünürlük (visibility) ve kalıtım (inheritance) özelliği, özet (abstract) ve arayüz (interface) nesne türleri desteği bulunmaktadır. Web programlamada tarayıcıdan girilen bilgilere erişim için "superglobal" ismi verilen ön tanımlı değişkenler bulunmaktadır. Sunucu, tarayıcı ve istek bilgilerine erişim için $_SERVER, GET yönetimi ile gönderilen bilgiler için $_GET, POST yöntemi ile gönderilen bilgiler için $_POST, dosya yüklemesi sırasında yüklenen dosyaya ait bilgilere erişim için $_FILE, çerez (cookie) bilgilerine erişim için $_COOKIE ve sezon (session) bilgilerine erişim için ise $_SESSION değişkeni kullanılır. Bu değişkenler PHP betiği içerisinde heryerden erişilebilir ve değerleri dizi olarak döner. Dosya ve dizin işlemleri için C programlama dilinde kullanılan benzer isimlendirmeler ile fonksiyonlar tanımlanmıştır. Bunlara örnek olarak, "fopen", "fclose", "fgets" ve "feof" fonksiyonları verilebilir. Ek olarak dizin işlemleri için "opendir", "closedir" ve "readdir" gibi fonksiyonlar ve bu fonksiyonlara eşdeğer nesne arayüzleri bulunmaktadır. PHP dilinde birçok işlemi basitleştirmek için yardımcı fonksiyonlar ve nesneler bulunmaktadır. Bunlar kurulum sırasında veya kurulumdan sonra yüklenebilen eklentiler ile beraber gelitler. Eklentilerin sayısı yaklaşık 200'ü aşkındır. Veritabanları ile çalışmak için PHP dilinde birçok eklenti vardır. Bunlardan en yaygın olanı MySQL veritabanı sunucusu için birden fazla eklenti ve diğer veritabanı sunucularını da destekleyen, PDO (PHP Database Object) ismi verilen bir ortak veritabanı arabirimi bulunmaktadır. MySQL veritabanı sunucusu haricinde, PostgreSQL, SQLite, Oracle, MSSQL, Informix, FireBird/InterBase ve IBM DB2

gibi birçok veritabanı da eklentilerde desteklenmiştir. [6] Son yıllarda sıklıkla karşımıza çıkan NoSQL [7] kavramı ile gelen ilişkisiz veritabanlarına örnek olarak MongoDB ve üçüncü parti Redis eklentisi, "key-value" (anahtar-değer) veritabanlarına örnek olarak Memcache için de eklentiler mevcuttur. [5] PHP Editor Review - PHP IDE. http://www.php-editors.com [6] The PHP Group. PHP: İşlev Başvuru Kılavuzu - Manual. http://www.php.net/manual/tr/funcref.php [7] Vikipedi. NoSQL (kavram) - Vikipedi. http://tr.wikipedia.org/wiki/nosql_(kavram) Bu eklentiler haricinde sıklıkla kullanılan; GD: Görüntü/resim işleme, SimpleXML: XML dosyalarını ve XML formatında metinleri işleme, COM: Microsoft Windows üzerinde COM nesenelerine erişim, PCRE: Düzenli ifadeler, Mail: Elektronik posta gönderme, CURL: Uzak sunuculara HTTP, HTTPS ve FTP gibi protokoller ile erişim, APC: Önbellek işlemleri eklentileri sayılabilir. Eklenti geliştirmek için Zend Engine altında, C programlama dili ile hazırlanmış bir eklenti taslak kodu bulunaktadır. Zend Engine ve PHP içinde bulunan eklentilerin kaynak kodları açık olduğu için bu eklentileri inceleyerek te ihtiyaç duyulan eklenti kolayca geliştirilebilir. Kaynaklar [1] Zend Technologies Ltd. PHP Web Application Server - PHP Development tools - PHP Training - Zend.com. http://www.zend.com [2] The PHP Group. PHP 5.4 yenilikler. http://svn.php.net/viewvc/php/phpsrc/branches/php_5_4/news?view=markup [3] The PHP Group. PHP for Windows. http://windows.php.net [4] Microsoft Corporation. PHP on IIS7: The Offical Microsoft IIS Site. http://php.iis.net