108
GİRİŞ İşletim sistemleri, her daim bilgisayarları yönetmek için kullanılan programlar olmuştur. Günümüzde ise hayatın içinde sıkça kullandığımız cihazlar arasında yer alan televizyonlar da “SMART“ özelliği adı altında birer işletim sistemine sahip olabilmektedir. Ancak; her elektronik cihazın birer bilgisayara dönüşmesi; onlar için uygulama yazımını da zorlaştırmaktadır. Bu durumun temel nedeni ise her işletim sisteminin desteklediği dillerin değişebilmesi ve uygulamanın söz edilen işletim sistemine ulaştırılabilmesindeki güçlüklerdir. Örneğin; yayın olarak kullanılan tablet bilgisayarlar veya akıllı telefonların USB girişlerinin olmaması onlara uygulamayı ulaştırmada karşılaşılan güçlüklerden birisidir. Ayrıca bu durumda ikinci bir cihaza ihtiyaç duyulacak olması da gözden kaçırılmamalıdır. Elbette teknolojinin gelişmesi ile ortak uygulama geliştirme platformları da üretilmektedir. Ancak birçok yönden çalıştırılacak uygulamanın bilgisayara yüklenmesi dezavanajtarını da beraberinde getirecektir. Örneğin; uygulamanın yüklü olduğu bilgisayara bir zarar gelmesi halinde uygulama da zarar görecektir. Ayrıca; uygulama yüklenmesi gibi ihtiyaçlar da her ne kadar basit gibi görünse de “çevrimiçi uygulama” ile karşılaştırıldığında gereksinim olduğundan eksi hanesinde yerini alacaktır. Çevrimiçi uygulamalar ise bir internet tarayıcısı üzerinden çalışarak uzaktaki sunucuda işlemler yapılabilemesine olanak tanımaktadır. Bu tür uygulamalar genellikle bir internet adresine sahiptir ve kaydedilen bilgiler sunucuda saklanır. Bu tür uygulamaların yazım alanına ise “İnternet Programcılığı” adı verilmektedir. İnternet programcılığının yapıldığı en yaygın diller ise PHP, JSP ve ASPX’dir. Ayrıca yardımcı olarak Javascript de sıkça kullanılmaktadır. KULLANIM ALANLARI İnternet programcılığının kullanım alanları genellikle tek bir merkezden yürütülen işlerdir. Örneğin; sınav başvurularının tek bir merkezden alınması için gerekli olan uygulama internet programcılığı ile geliştirilir. DİĞER DİLLERDEN FARKLARI Günümüzde bilgisayar teknolojisinin yaygınlığı beraberinde fiziksel olarak tutulan kayıtların sanal ortama aktarılmasını getirmiştir. Bu aktarımın gerçekleşmesi ise bilgisayar programları

bil184471012.files.wordpress.com€¦  · Web viewİşletim sistemleri, her daim bilgisayarları yönetmek için kullanılan programlar olmuştur. Günümüzde ise hayatın içinde

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

GİRİŞ

İşletim sistemleri, her daim bilgisayarları yönetmek için kullanılan programlar olmuştur. Günümüzde ise hayatın içinde sıkça kullandığımız cihazlar arasında yer alan televizyonlar da “SMART“ özelliği adı altında birer işletim sistemine sahip olabilmektedir. Ancak; her elektronik cihazın birer bilgisayara dönüşmesi; onlar için uygulama yazımını da zorlaştırmaktadır. Bu durumun temel nedeni ise her işletim sisteminin desteklediği dillerin değişebilmesi ve uygulamanın söz edilen işletim sistemine ulaştırılabilmesindeki güçlüklerdir.

Örneğin; yayın olarak kullanılan tablet bilgisayarlar veya akıllı telefonların USB girişlerinin olmaması onlara uygulamayı ulaştırmada karşılaşılan güçlüklerden birisidir. Ayrıca bu durumda ikinci bir cihaza ihtiyaç duyulacak olması da gözden kaçırılmamalıdır.

Elbette teknolojinin gelişmesi ile ortak uygulama geliştirme platformları da üretilmektedir. Ancak birçok yönden çalıştırılacak uygulamanın bilgisayara yüklenmesi dezavanajtarını da beraberinde getirecektir. Örneğin; uygulamanın yüklü olduğu bilgisayara bir zarar gelmesi halinde uygulama da zarar görecektir. Ayrıca; uygulama yüklenmesi gibi ihtiyaçlar da her ne kadar basit gibi görünse de “çevrimiçi uygulama” ile karşılaştırıldığında gereksinim olduğundan eksi hanesinde yerini alacaktır.

Çevrimiçi uygulamalar ise bir internet tarayıcısı üzerinden çalışarak uzaktaki sunucuda işlemler yapılabilemesine olanak tanımaktadır. Bu tür uygulamalar genellikle bir internet adresine sahiptir ve kaydedilen bilgiler sunucuda saklanır. Bu tür uygulamaların yazım alanına ise “İnternet Programcılığı” adı verilmektedir. İnternet programcılığının yapıldığı en yaygın diller ise PHP, JSP ve ASPX’dir. Ayrıca yardımcı olarak Javascript de sıkça kullanılmaktadır.

KULLANIM ALANLARI

İnternet programcılığının kullanım alanları genellikle tek bir merkezden yürütülen işlerdir. Örneğin; sınav başvurularının tek bir merkezden alınması için gerekli olan uygulama internet programcılığı ile geliştirilir.

DİĞER DİLLERDEN FARKLARI

Günümüzde bilgisayar teknolojisinin yaygınlığı beraberinde fiziksel olarak tutulan kayıtların sanal ortama aktarılmasını getirmiştir. Bu aktarımın gerçekleşmesi ise bilgisayar programları ile mümkündür. Bilgisayar programlarını sunucu kaynakları açısından ikiye ayırabiliriz.

1. Yerel uygulamalar

2. İnternet uygulamaları

Yerel uygulamalar, uygulamanın geliştirilmesinden sonra kullanıcı bilgisayarına yüklenmesi ile çalışmaktadır. Bu tür uygulamaların işlem yapan kodları ve bilgileri saklayan veritabanları kullanıcı bilgisayarında yer almaktadır. İnternet uygulamalarına oranla kesintisiz ve hızlı bir altyapı sunarlar. Bu avantajların sebebi, kullanıcının bilgiyi kaydetmesi için aracı bir bağlantıya ihtiyaç duymamasından kaynaklanmaktadır. Ancak; ünitenin giriş kısmında belirtildiği gibi bu durum bir dezavantaja dönüşebilir. Çünkü kullanıcının bilgisayarına zarar gelmesi halinde bütün bilgiler ve uygulama çalışamaz duruma gelecektir.

Yerel uygulamalarda ortaya çıkan bir dezavantaj da; programın güncellenmesi aşamasında ortaya çıkmaktadır. Güncelleme paketlerinin yüklenmesi tamamen kullanıcının insiyatifinde olduğundan gerçekleşmeme ihtimali bulunmaktadır. Bu durumun sonucu olarak da geliştirici uygulamanın bütün kullanıcılarda doğru çalışmasını garanti edemeyebilir.

İnternet uygulamaları, programın kaynak kodlarının ve veritabanının uzak bir sunucuda bulunduğu uygulamalardır. Bu tür uygulamalarda kaynak tekil olduğu için güncellenmesi ve hataların kapatılması daha hızlı olmaktadır. Ayrıca; kullanıcı bilgisayarlarından bağımsız olduğu için virüslerden etkilenme ihtimalleri çok daha zayıftır.

İnternet uygulamalarının en önemli dezavantajı ise uygulamada bir sorun olması halinde hiçbir kullanıcının uygulamaya erişemeyecek olmasıdır. Ancak; bu durum uygulamada oluşacak sorunların daha hızlı çözüme kavuşturulmasını da beraberinde getirmektedir.

Bir programcının hangi metodu kullanarak uygulama geliştireceğini seçmesi gerekir. Birçok uygulama türü için internet programcılığı kullanılsa da yapılacak işlemlerin gereksinimlerine gore yerel uygulama geliştirme de tercih edilmesi gerekebilir.

Aşağıdaki gereksinimlerde yerel uygulama geliştirmeyi seçmek daha doğru bir yaklaşım olacaktır.

1. Yüksek işlemci kullanımı gerektiren işlemler (örneğin grafik işlemleri)

2. Kullanıcı sayısının uzak bir sunucuda uygulama geliştirme maliyeti için fazla olduğu durumlar

3. İnternet bağlantısının olmadığı veya zayıf olduğu durumlar

4. Uygulamanın istediği her an kullanıcı bilgisayarına erişmesini gerektiren durumlar

Bilginin uzak bir sunucuda saklanmasının güvenli olmadığı durumlarla da karşılaşılabilir. Ancak; bu tür durumlarda yerel ağ veya intranet üzerinde bir sunucu kurularak bilginin ağ dışına çıkışının önüne geçilebilir. Örneğin; 6 bilgisayarı olan bir kurumda, ağ üzerine bir bilgisayar daha dâhil edilerek internet sunucusu şeklinde kullanılabilir. Bu şekilde hem sunucu kirası, alan adı kirası gibi ek masraflardan da uzak kalınmış olacaktır.

UYGULAMA DİLİNİN SEÇİLMESİ

İnternet programcılığı gerektiren durumlarda programlamanın hangi dille yapılacağının belirlenmesi önemlidir. Bu seçim yapılırken dikkat edilmesi gereken hususların başında ise dile olan hâkimiyet vardır. Çünkü hâkim olunan bir dil ile 1 haftada geliştirilebilecek uygulama, daha az bilinen bir dil ile belki on kat fazla sürede geliştirilebilecektir.

Destek

Kullanılacak dilin seçiminde, kullanıcı desteğinin de yeterli seviyede olması önemlidir. Bu noktada resmi kanallarla elde edilen dökümantasyonlardan daha çok; resmi olmayan destek kapasiteleri önemlidir. Çünkü kullanıcıların karşılaştıkları sorunları internette aramaları halinde elde edecekleri veriler ile çözüme ulaşmaya çalışacakları aşikârdır.

Google arama moturunu kullanarak, Türkçe sayfalar içerisinde bir arama yapacak olursak destek seviyeleri hakkında bir fikir yürütebiliriz.

Sonuç Sayısı

Aranan Cümle

411.000

php ile veritabanı bağlantısı

76.300

aspx ile veritabanı bağlantısı

14.200

jsp ile veritabanı bağlantısı

Tablo 1.1: Destek için yapılan bir Google araması sonuçları

Tablo 1.1’den görülebileceği gibi bir işlem hakkında yapılan arama sonuçlarında en fazla döküman PHP dili için bulunmuştur. Elbette bu sonuçlardan en iyi desteğin PHP tarafından verildiği gibi bir anlam çıkarılamaz. Ancak; bir problemle karşılaşıldığında çözümün internette bulunma ihtimali hakkında fikir yürütmek mümkün olmaktadır. Phyton ve CGI gibi diğer dillerin Türkçe destek kaynakları çok daha azdır.

Uygulama Geliştirme

Kullanılacak dilin seçilmesinde bir diğer önemli faktör ise, geliştirme aşamasında kullanılacak araçların elde edilmesi sırasında karşımıza çıkacaktır. Bu araçları ikiye ayıracak olursak; aşağıdaki seçenekleri elde edebiliriz.

1. Servisler

2. Editörler

Servisler

Seçilen uygulama dilinin yerel bilgisayarda derlenmesi ve ve çalıştırılabilmesi için gerekli olan servislerin yüklenmiş olması gerekmektedir. Her bir dilin kendine özgü servis uygulaması bulunmaktadır. Servis uygulamaları bakımından dilleri incelediğimizde aşağıdaki tablo karşımıza çıkacaktır.

Uzantı

Gerekli Servis

İşletim Sistemi Desteği

PHP

Apache httpd veya IIS

Windows / Linux / Mac OS

ASPX

IIS (Internet Information Services)

Windows

JSP

Apache Tomcat veya Glassfish

Windows / Linux / Mac OS

Tablo 1.2: Uygulama dilleri ve gereksinimleri

Tablo 1.2’de yer alan IIS (Internet Information Services), Microsoft firması tarafından geliştirilen ve Microsoft Windows kullanıcılarına ücretsiz olarak sunulan bir servistir. Ancak; bu servis sadece Windows işletim sistemlerinde çalışabilmektedir. Bazı yöntemler kullanarak Linux işletim sistemleri üzerinde de ASPX sayfaları çalıştırılabilse de; tabloda sadece doğrudan verilen desteklere yer verilmiştir.

Apache httpd, Apache Tomcat ve GlassFish servisleri, yaygın bütün işletim sistemleri üzerinde çalışabilmektedir. İşletim sistemi olarak Windows’un yeterli gelebileceği düşünülebilir. Ancak; Microsoft firmasının sunucu işletim sistemleri için talep ettiği yüksek ücretler dikkate alındığında; alan kiralama (hosting) firmaları genellikle Linux işletim sistemlerini seçmektedir. Bu durum ise ASPX yayınlamak için gerekli olan sunucu kiralama maliyetlerini daha kısıtlı ve yüksek neden olmaktadır.

Editörler

Çevrimiçi uygulamalar geliştirirken en önemli araçlardan birisi de editörlerdir. Editörler, uygulama kodlarının yazıldığı programlar olarak tanımlanabilir. Günümüzde bütün diller için birden fazla editör mevcuttur.

PHP, ASPX ve JSP uygulamaları yazmak için gerekli editörleri sahip oldukları yetenekler yönünden değil; uygulamayı yayınlama için ihtiyaç duydukları adımlar açısından inceleyebiliriz. Bu tür bir inceleme ile uygulamanın yayınlanma hızı hakkında fikir sahibi olunabilir. Uygulamaların yayınlanma hızları, geliştiricinin yazdığı kodların sonucunu ekranda görebilmesi için gerekli olan süre olarak düşünülebilir.

Aşağıdaki şemada PHP, ASPX ve JSP dillerinde uygulamanın yayınlanması için editörlerin yaptığı işlemlerin yüzeysel incelemeleri görülebilir.

Şekil 1.1: Uygulamanın sonuçlandırma aşamaları

PHP ile geliştirilen uygulamalarda editörler, kullanıcının yazdığı kodları fiziksel dosya üzerine kaydettiği anda yayınlamış olurlar. Ancak; diğer dillerde kodlar, derleme işlemi adı altında bütün bağları çözülerek paketlenir ve yayınlanır. Bu durum ise yayınlama işleminin daha uzun sürmesine neden olmaktadır.

PHP UYGULAMALARI

Bu noktaya kadar PHP dilinin seçilmesinin temel nedenleri hakkında fikir sahibi olunabilmesi için gerekli bilgiler verildi. Bu konuda ise PHP dilini kullanarak uygulama yazabilmek için örneklendirmeler yapılacaktır.

Geliştirme Ortamı

PHP uygulamalarını geliştirmek için gerekli olan Apache httpd servisinin kurulması kolay olsa da; Apache servisinin üzerine PHP desteğinin eklenmesi göreceli olarak daha zordur. Ancak; bu gereksinimler yaygın olduğundan otomatik kurulumlar yapan uygulama paketleri internet üzerinde mevcuttur. Bu paketlerden bazılarını listeleyecek olursak aşağıdaki gibi verilebilir.

· WAMP

· XAMPP

· LAMP

Geliştirme paketleri arasında en yaygın kullanılanı WAMP’dır. Bu paket internetten ücretsiz olarak indirilebilir. 32 Bit Microsoft Windows işletim sistemerinde çalışabilecek WAMP yazılımı için gerekli olan paketler aşağıdaki listeden tıklanarak indirilebilir.

1. Microsoft Visual C++ 2010 SP1

2. WampServer 2.4

Yukarıdaki listedeki uygulamalara tıklayarak indirdiğiniz paketleri kurmak için; paketlere çift tıkladıktan sonra, her ekranda “Next (İleri)” düğmelerine tıklayabilirsiniz.

PHP Dosyaları

PHP kodlarını barındıran dosyalar, basit metin dosyalarından farklı değillerdir. Sadece uzantı olsarak “.php”, “.php3”, “.php4” veya “.php5” gibi ifadeler kullanırlar. Ancak; genellikle “.php” uzantısı kullanılır.

PHP dosyalarını yazmak veya düzenlemek için bütün Microsoft Windows işletim sistemleri içerisinde standart olarak bulunan “Not Defteri” uygulaması kullanılabilir. Ancak; bu uygulama kodlarda renklendirme yapmayacağı için biz ders boyunca, “Notepad++” uygulamasından yararlanacağız. Notepad++ uygulamasını, http://notepad-plus-plus.org adresini ziyaret ederek veya buraya tıklayarak edinebilirsiniz. Kurulum aşamasında her ekranda “Next (İleri)” düğmesine tıklamanız yeterli olacaktır.

Notepad++ uygulaması ilk çalıştırıldığı zaman ekranda oluşacak görüntü aşağıdaki gibi olacaktır.

Resim 1.1: Notepad++ uygulamasının ekran görüntüsü

Dil Kodlaması

Türkçe dilinde mevcut bulunan “ö,ç,ü,ş,ı,ğ” gibi özel karakterlerin kaydettiğimiz sayfalarda doğru görüntülenebilmesi için dosyaların dil kodlamasının UTF8 olarak seçilmiş olması gerekmektedir.

Dil kodlamaları sayfa içerisinde görüntülenmese de sadece işletim sistemleri ve uygulamaların görebileceği dosyanın başlık kısmında yer almaktadır. Geliştirilen her PHP sayfası öncelikle mutlaka karakter kodlaması seçilerek yazılmaya başlanmalıdır. Aksi takdirde; dil kodlaması sonradan değiştirilen dosyaların içinde mevcut bulunan karakterler bozulabilir. Bu bozulmanın geri dönüşü ise mümkün olmayacaktır.

Notepad++ uygulaması ile bir dosyanın karakter kodlamasını UTF8 yapabilmek için, uygulamanın üst panelinde yer alan “Kodlama” menüsünden “UTF-8 Kodlaması (BOM’suz)” seçeneğine tıklanmalıdır. Bu durumu gösteren ekran görüntüsü aşağıdaki gibi verilebilir.

Resim 1.2: Dil kodlamasının seçilmesi

Dosyaların Konumu

PHP dosyalarını bilgisayardaki herhangi bir dizine kaydederek çalıştırılması ancak bazı düzenlemeler yapıldıktan sonra mümkündür. WampServer kurarak PHP uygulamalarını çalıştıracak bir geliştiricinin dosyalarını “C:\wamp\www” klasörüne kaydetmesi gerekir.

WampServer uygulamasının belirlediği “C:\wamp\www” dizininde mevcut olarak “index.php” ve “testmysql.php” dosyaları yer almaktadır. Bu dosyaları silerek kendi dosyalarınıza ulaşmanızı kolaylaştırabilirsiniz.

Ayrıca; Notepad++ uygulaması ile PHP dosyalarızı kaydederken; Ctrl+S tuş kombinasyonunu kullanabilirsiniz. Bu esnada karşınıza çıkan pencerede yer alan “Dosya adı” kutucuğuna dosya adından sonra mutlaka “.php” uzantısı eklemeyi unutmayınız. Örneğin; dosya adı olarak “ata-aof” kullanacaksanız. Kayıt ekranında “ata-aof.php” yazmanız gerekmektedir. Aksi takdirde dosyanız metin dosyası olacağı için PHP kodlarını çalıştırmak yerine gösterecektir. Kayıt ekranın gösteren ekran görüntüsü aşağıdaki kısmı içerecektir.

Resim 1.3: Kayıt ekranın dosya adı kısmı

Eğer dilerseniz, dosya adına “.php” uzantısı eklemek yerine, “Kayıt türü” olarak “PHP Hypertext Processor file (*.php,*.php3,*.php4)” seçebilirsiniz. Bu seçimin yapıldığı durumlarda Notepad++ uygulaması dosya uzantısı olarak “.php” ilavesini kendisi yapacaktır.

Dosyaların Çalıştırılması

PHP dosyalarına yazılan kodların çalıştırılması için internet tarayıcısı kullanmak gerekir. Geliştirici bilgisayarına yüklü olan herhangi bir internet tarayıcısını kullanarak PHP kodlarını çalıştırabilir.

WampServer kurduktan sonra ekranın sağ alt köşesine gelen simgenin rengi yeşil olması halinde bütün servislerin doğru çalıştığı söylenebilir. Bu durumda internet tarayıcısının adres kısmına “localhost” yazılarak yerel sunucuda var olan dosyalar görüntülenebilir. Bu ekranda görüntülenen dosyalar aslında “C:\wamp\www\” dizinindeki dosyalardır.

Bir önceki konuda kaydettiğimiz “ata-aof.php” dosyasını ve dizinde bulunan diğer dosyaları tarayıcıda görüntülediğimizde elde edeceğimiz ekran görüntüsü aşağıdaki gibi olacaktır (bir önceki konuda belirttiğimiz gibi “index.php” ve “testmysql.php” dosyaları silinmiş olmalıdır).

Resim 1.4: Yerel sunucudaki dosyaların listelenmesi

Tarayıcıda listelenen mavi renkli bağlantılar dizindeki dosyaları temsil etmektedir. Bu dosyaya tıklanması halinde içerdiği PHP kodları çalıştırılacak ve ekran görüntüsü oluşturulacaktır.

Etiketler

Web Tasarımın Temelleri dersinden hatırlanacağı üzere internet sayfaları hazırlanırken kullanılan elementlerin etiketleri bulunmaktaydı. Etiketler yardımıyla HTML sayfası içerisinde bulunan objelerin resim, metin veya çerçeve olduğunu tanımlamak mümkündü. Örneğin; bir paragraf metni,

ve

etiketleri arasında yer almaktaydı.

PHP kodlarını içeren etiketler HTML dilindekine yakın yapıdadır. Bu etiketler <?php ve ?> olarak başlar ve sonlanır. Bütün PHP kodları bu etiketler arasında olmak zorundadır. Aksi takdirde internet tarayıcısında kodların çalışması sonucu oluşan değerler değil; bizzat kodların kendisi görüntülenecektir.

Resim 1.5: PHP etiketleri

Resim 1.5 örneğinde boş bir PHP sayfasında olması gereken kodlar yer almaktadır. Sayfa içerisinde renklendirmenin aktif olması için .php uzantısı ile kaydedilmiş olması şarttır.

Ekran Çıktısı

PHP kodlarında ekran çıktısı almak için “echo” ve “print” komutları kullanılabilir. Bu kodlar arasında yapılan testlerde “echo” komutunun daha hızlı çalıştığı görülmüştür. Ancak; bu seviyedeki hız farkları ancak çok yoğun işlemlerde ortaya çıkabilir.

Daha önce kaydettiğimiz “ata-aof.php” sayfasında bir ekran çıktısı almak için aşağıdaki kodlar yazılabilir.

Resim 1.6: Ekran çıktısı örneği

Yukarıdaki örnekte yer alan kodların tarayıcıda oluşturacağı görüntüyü izlemek için, tarayıcının adres satırına http://localhost/ata-aof.php yazılacak olursa; aşağıdaki izleme yapılabilir.

Resim 1.7: Örnek dosyanın tarayıcıdaki ekran görüntüsü

HATA TAKİBİ

Geliştirme aşamasına kullanıcıların karşılaştığı hatalar PHP tarafından tarayıcı ekranına yansımaktadır. Aşağıdaki görüntüde PHP tarafından verilmiş bir hata yer almaktadır.

Resim 1.8: PHP hata görüntüsü

Resim 1.8’de görülen hatada; son kelime olarak “line 3” yer almaktadır. Bu kısımda hata olan dosyanın üçüncü satırına bakılması gerekmektedir. Hata olan dosya ise hemen bir önceki ifade olan “D:\wamp\www\ipu1\ata-aof.php”’dir. Dosyanın görüntüsü ise aşağıdaki gibidir.

Resim 1.9: Hata olan dosyada yer alan kodlar

Resim 1.9’a dikkat edilecek olursa; 2. satırın sonunda eklenmesi gereken noktalı virgül (;) işareti görülememektedir. Bu durum ise üçüncü satırın hatalı okunmasına neden olmakta ve uygulamanın ilerleyişinin önüne geçmektedir.

Hataların Gizlenmesi

PHP, kodlama sırasındaki bütün hatlarda uygulamanın ilerleyişini durdurmaz. Bu nedenle hatları gizlemek için birden fazla metod kullanılabilir. Bu metodlar, genel ve fonksiyon bazlı olarak iki şekilde ele alınabilir.

Genel hataların gizlenmesi

Sayfa içerisinde oluşan hataların kullanıcıya gösterilmesinin önüne geçilmesi için kullanılabilir. Ancak; bu kodun uygulamanın yayınlanması aşamasında sayfanın ilk satırına eklenmesinde fayda vardır. Aksi takdirde hatalar gizleneceği için geliştirici de çözüme ulaşmada zorlanabilir.

Aşağıda yer alan görselin 2. Satırında yer alan “error_reporting(0);” foksiyonu hataların gizlenmesini sağlamaktadır.

Resim 1.10: Hata engelleme fonksiyonunun kullanılması

Fonksiyon hatalarının gizlenmesi

Hatalar sadece fonksiyon bazında da gizlenebilir. Bu kullanım şeklinde hatası gizlenecek olan fonksiyonun adının önüne “@” işareti eklenerek gizleme işlemi yapılabilir. Bu kullanım; genel hata gizlemeye göre daha yaygındır. Aşağıdaki görselde “mysql_query” fonksiyonunun üreteceği hatalar gizlenmiştir.

Resim 1.11: Fonksiyon hatasının gizlenmesi

DEĞİŞKEN TANIMLAMA

Bu bölümde sayısal veya metin tipi değişken tanımlama, değişken tanımlarken uyulması geren kurallar açıklanmaktadır.

Değişken tanımlarken her zaman $ karakteri ile başlamalı daha sonra değişken ismini yazmalıyız. Değişken isimlendirirken değişken içerisindeki veriyi göz önünde bulundurmalıyız. Örneğin değişken içerinde adres barındırıyorsak değişkenimizin isminin adres olması değişkenin içeriğinin ne olduğunu anlamamız kapsamında bize fayda sağlayacaktır.

Resim 2.1: Değişken tanımlama

Yukarıdaki örnekte değişken tanımlanmıştır.

Değişken Tanımlarken Uyulması gereken kurallar

Değişken tanımlarken sayı ile başlanmaz. Ancak daha sonra kullanılabilir.

Resim 2.2: Değişken tanımlarken uyulması gerek kurallar-1

Değişken tanımlanırken _ (alt tire) haricindeki özel karakterler ( ?, -, *, ! gibi ) ve boşluk karakteri kullanılmaz.

Resim 2.3: Değişken tanımlarken uyulması gerek kurallar-2

Değişken tanımlarken Türkçe karakterlerin kullanılması çıkabilecek problemlerden dolayı önerilmez. Küçük “i” veya büyük “I” harfinin kullanılmasında herhangi bir sakınca yoktur.

Resim 2.4: Değişken tanımlarken uyulması gerek kurallar-3

Değişken isimleri küçük büyük harf duyarlılığı vardır.

Resim 2.5: Değişken tanımlarken uyulması gerek kurallar-4

Resim 2.6: Değişken tanımlarken uyulması gerek kurallar-5

Yukarıdaki birinci örnekte $ad isimli değişkeni önce “Ahmet” değeri atanmış daha sonra “Mehmet” değeri atandığı için değişkenin daha önceki değeri hafızadan silinmiştir. Ekrana sadece “Mehmet” yazılmıştır.

Yukarıdaki ikinci örnekte ise $ad ve $Ad isminde iki değişken tanımlanmıştır. Bu iki değişken ismi arasındaki tek fark; birinin büyük harf ile başlamasıdır. İki değişkenin isimleri birbirlerini yakın gibi gözüksen de PHP bu iki değişkeni birbirinden bağımsız iki farklı değişken olarak algılamaktadır. Bundan dolayı $ad değişkeninin değeri hiçbir değişime uğramadan ekrana yazdırılmıştır.

Değişken Tipleri

PHP’de değişken tanımlarken değişkenin tipini belirtmek zorunluluğu bulunmamaktadır. Değişkene atanan değer değişkenin tipini belirler.

Sayısal Tipi Değişkenler

1. Tamsayı (integer): Negatif ve pozitif tamsayılardan oluşur.

Resim 2.7: Sayısal tipi değişken tanımlama-1

2. Ondalık sayı (double): Negatif, pozitif ve ondalık sayılardan oluşur. Sayının ondalık kısmını ayırmak için “.” nokta kullanılır.

Resim 2.8: Sayısal tipi değişken tanımlama-2

Metin Tipi Değişkenler

Bu tip değişken tanımlarken metni tek tırnak (‘) veya çift tırnak (“) içerisinde yazılması gerekir. Metin içerisinde özel karakterler ( ?, -, *, ! gibi ) kullanılabilir. Ancak metinde tırnak işareti var ise öncesinde ters taksim (\) işareti kullanılmalıdır.

Resim 2.9: Metin tipi değişken tanımlama

Mantıksal Veri Tipi Değişkenler

Bu tur değişkenlerin sadece iki değeri olabilir. Bunlar; true (doğru yani 1) veya false (yanlış yani 0) tur.

Resim 2.10: Mantıksal veri tipi değişken tanımlama

Sabitler

Sabitlerin amacı da aynı değişkenler gibi hafızada veri tutmaktır. Sabitler içerisinde tamsayı (integer), ondalık sayı (double), metin (string) veya matıksal veri tipini barındırabilirler. Değişkenlerden farklı olarak adlandırılırken $ işareti kullanılmaz ve sabitlere atanan değerler daha sonradan değiştirilemez. Sabitler genel (global) değişken oldukları için tanımlandıktan sonra herhangi bir yerden erişilebilir. Sabitlerin tanımlanması değişkenlerden biraz daha farklıdır.

Tanımlama şekli: define(“sabit_adi”, “sabit değeri”)

Kullanım şekli: sabit_adi

Sabit tanımlarken sabit adını tırnak (“) işaretleri arasında yazılmalı ve değişken tanımlarken uyulması gerek kurallara uyulmalıdır. Tanımlanan sabiti çağırırken başına $ veya tırnak (“) işareti arasına yazılmadan sadece sabit adını yazmamız yeterlidir.

Resim 2.11: Sabit tanımlama

Yukarıdaki örnekte dikkat edilmesi gereken şey sabit değişkenimizi çağırırken ilk karakter olarak $ kullanılmamıştır.

Veri Tipini Bulma ve Dönüştürme

Program yazarken programın içerisindeki değişkenlerin tiplerinin neler oldukları çoğunlukla bilinir ancak; gelen veri dış kaynaklıysa veya program kod satırı çok fazla ise bu gibi durumlarda değişkenin içerisinde bulunan değerin tipini öğrenmek isteyebiliriz. PHP’de veri tipini öğrenmek için gettype() fonksiyonu kullanılır.

Kullanım şekli: gettype(değişken adı)

Resim 2.12: Değişken tipi bulma

Gettype fonksiyonundan dönebilecek değerler;

Tablo 2.1: gettype() fonksiyonundan dönebilecek değerler

değer

açıklama

string

Metin tipi değişken

integer

Tamsayı tipi değişken

double

Ondalık sayı tipi değişken

array

Dizi tipi değişken

object

Nesne tipi değişken

class

Sınıf tipi değişken

boolean

True / False türü değişken

Değişken tipini öğrenmek bir başka fonksiyon ise var_dump() fonksiyonudur. Fakat bu fonksiyon gettype() fonksiyonunda olduğu için bir dönüş yapmadan değişkenin tipini ve değerini ekrana yazdırır.

Resim 2.13: Değişken tipi bulma

Bazen tanımlanan değişkenlerin tipinin başka bir tipe dönüşmesi gerekebilir. PHP’de bu durumda settype() fonksiyonu kullanılır. Bu dönüşüm sırasında değişken değeri dönüştüğü değişken tipine göre değişime uğrayabilir. Unutulmaması gereken şey ise; veri tiplerinin farklı özellikteki verileri barındırdıkları için dönüşüm sırasında veri kaybı yaşanabilir.

Kullanım şekli: settype(değişken adı, değişken tipi)

Değişken tipi olarak gettype() fonksiyonundan gelebilecek değerler kullanılır.

Değişken tipi tırnak (“) işareti arasında yazılması gerekmektedir.

Resim 2.14: double (ondalık) tipi değişkeni integer (tamsayı) tipi değişken dönüştürme.

Yukarıdaki örnekte double tipi değişkeni integer tipi değişkene döndürdüğümüzde sayının ondalık kısmının atıldığını görüyoruz. Bunun nedeni integer içerisine sadece tam sayıları barındırabilen bir değişken tipi olmasıdır.

Resim 2.15: farklı tip değişkenleri boolean tipi değişkene dönüştürme.

Metin (string) tipi bir değişkeni tamsayı (integer) tipi bir değişkene dönüştürülmek istendiğinde eğer metin (string) değişkeni rakam ile başlıyorsa rakamların bittiği karaktere kadar olan kısım tamsayı (integer) tipi değişkene dönüştürülür ve geriye kalan kısım atılır. Eğer metin (string) tipi değişken değeri rakam ile başlamıyor ise sonrasında rakam olsa dahi sonuç “0” sıfır olacaktır.

Resim 2.16: farklı tip değişkenleri boolean tipi değişkene dönüştürme.

Yukarıdaki örnekte bir tane metin bir tane de sayısal tip değişkeni boolean tipi değişkene dönüştürdüğümüzde ikisinin de sonucu “1” yani “true” oldu. Bunun nedeni; harhangi bir tipteki değişkeni boolean tipi değişkene dönüştürdüğümüzde eğer değişken boş veya “0” sıfır değilse her zaman “1” yani “true” sonucunu döndürür. Eğer değişken içeriği boş veya “0” sıfır false yanıtı döndürür.

OPERATÖRLER

Operatörler bir veya daha fazla değeri alıp işleyerek bize döndüren özel karakterlerdir.

Aritmetik Operatörler

Bu tür operatörler basit matematiksel işlemler yapmak için kullanılır. Bu operatörler kullanılır%E%Fken dikkat edilmesi gereken şey; matematik işlemlerdeki işlem önceliği burada da geçerlidir. Yani ilk önce parantez var ise parantez içerisi daha sonra çarpma, bölme ve mod alma en son toplama ve çıkarma işlemi yapılır.

Tablo 2.2: Aritmetik operatörler ve kullanımları

operatör

açıklama

kullanımı

+

Toplama işlemi

$sayi1 + $sayi2

-

Çıkarma işlemi

$sayi1 - $sayi2

*

Çarpma işlemi

$sayi1 * $sayi2

/

Bölme işlemi

$sayi1 / $sayi2

%

Mod (bölümden kalan) alma işlemi

$sayi1 % $sayi2

Aritmetik operatörler sabit değerler arasında kullanılabileceği gibi değişkenler arasında da kullanılabilir.

Resim 2.17: Aritmetik operatör kullanımı.

Yukarıdaki örnekte ilk satırda $sayi1 değişkeni tanımlanarak 27 – 7 işleminin değeri yani 20 atandı. İkinci satırda ise $sayi2 değişkeni tanımlanarak 10 değeri atandı. Üçüncü satırda ise $sonuc adlı değişken tanımlanarak ilk önce $sayi1 ile $sayi2 değerleri toplandı “30” otuz değeri elde edildikten sonra “30” değerinin 4 ile bölümünden kalan “2” iki değeri $sonuc değişkenine atandır. Son olarak $sonuc değişkeni “2” ikiye bölünerek ekrana “1” bir değeri yazıldı.

Metin (string) Birleştirme Operatörü

Metin birleştirme operatörü iki metin tipindeki değişkeni yan yana toplanması için kullanılır. Bu operatörü kullanmak için “.” Nokta karakteri kullanılır.

Resim 2.18: Metin operatörünün kullanımı.

Yukarıdaki örnekte $sehir adında değişkene “ERZURUM” değer atanarak tanımlandıktan sonra ekrana yazdırılarak alt satıra geçilmiştir. Daha sonra $isim adındaki değişkene “Ahmet” tanımlandıktan sonra ekrana yazdırılarak alt satıra geçilmiştir. En son $sehir değişkeninin yanına “ “ boşluk karakteri ve $isim değişkeninin değeri eklenerek ekrana yazdırılmıştır.

Bileşik Atama Operatörleri

Bileşik atama bir değerin üzerinde işlem yapıp bu değeri değişkene atamak için kullanılan operatörlerdir.

Resim 2.19: Metin operatörünün kullanımı.

Yukarıdaki örnekte $sayi1 değişkeni 5 değeri atanarak tanımlanmıştır. İkinci satırda $sayi1 değişkene $sayi1 + 10 değeri atanmıştır. Bu işlemde yapılan; $sayi1 değişkenini 10 artırıp sonucu tekrar $sayi1 değişkenine atanmasıdır. Bu işlem sonucunda $sayi1 değişkeninin son değeri yani 15 ekrana yazılmıştır. Bu işlemi daha kısa yoldan yapımı ise $sayi2 değişkeni üzerinden gösterilmiştir.

Bileşik atama operatörü “=” eşittir karakterinden önceki operatör toplama işareti ise değişkenin ilk değerine “=” eşittir karakterinden sonraki değeri ekler, çıkarma işlemi ise çıkarır, bölme işlemi ise böler çarpma işlemi ise çarpar sonucunu değişkene atar.

Tablo 2.3: Bileşik atama operatörleri. Tablodaki $sayi değişkeninin ilk değeri 10 olarak varsayılmıştır.

operatör

kullanımı

yapılan işlem

sonuç

+=

$sayi += 5

$sayi = $sayi + 5

15

-=

$sayi -= 5

$sayi = $sayi - 5

5

*=

$sayi *= 5

$sayi = $sayi * 5

50

/=

$sayi /= 5

$sayi = $sayi / 5

2

Artırma ve eksiltme operatörleri

Artırma operatörleri değişken değeri “1” artırmak veya azaltmak için kullanılan operatörlerdir. Operatör artırmak için “++” eksiltmek içinse “--“ karakterlerini kullanmaktadır. Eğer operatör değişkenin sonuna eklenirse artırma veya eksiltme işlemi o satırdan sonra geçerlidir önüne konursa o satırdan itibaren geçerlidir.

Resim 2.20: Artırma operatörü

Yukardaki örnekte $sayi1 değişkeni ilk “12” on iki olarak tanımlanmıştır. Daha sonra $sayi1 değişkenini “1” bir artırmak için “++” operatörü değişkenden sonra kullanılarak değişken ekrana yazdırılmıştır. Ekrana yazdırılan değer değişkenin ilk değeri ile aynı olmasının nedeni “++” operatörünü değişkenden sonra yazılmasıdır. $sayi1 değişkeni hiçbir değişiklik uğramadan alt satırda tekrar ekrana yazdırıldığında ilk değerinden “1” fazlası olan 13 değeri ekrana yazılmıştır.

İkinci örnekte $sayi2 değişkeni $sayi1 değişkeni ile aynı işlemler uygulanmış ancak “++” operatörü değişkenden önce kullanıldığı için artırma işlemi operatörün yazıldığı satırda gerçekleşmiştir.

Resim 2.21: Eksiltme operatörü

Yukarıdaki örnekte eksiltme operatörü örneği verilmiştir.

Bir sayının “1” bir ile çarpımı veya bölümü kendisini verdiği için bölme veya çarpma operatörü yoktur.

Karşılaştırma Operatörleri

Karşılaştırma operatörleri iki veriyi eşit, denk veya farklı olması gibi durumları değerlendirerek boolean (true/false) türünde değer döndürürler. Bu konun 4.Ünite de daha detaylı olarak anlatılacaktır.

DİZİLER VE DİZİ İŞLEMLERİ

Bu bölümde dizilerin kullanımını, farklı tanımlama şekillerini ve dizi fonksiyonlarının kullanımı anlatılacaktır.

Diziler adlandırılırken değişkenlerde olduğu gibi $ karakteri ile başlar ve değişken adlandırılırken uymamız gereken kurallar diziler için de geçerlidir. Dizilerin tanımlanması birkaç yöntemle yapılabilmektedir. PHP’de diğer programla dillerinde pek rastlanmayan bir dizi içerisinde metin, sayı ve mantıksal tipteki değeri aynı anda tutabilme imkanı vardır.

En basit hali ile dizi tanımlama aşağıda verilmiştir.

Resim 3.1: Dizi tanımlama

Dizi Tanımlarken Uyulması Gereken Kurallar

1. Dizi tanımlanırken sayı ile başlanmaz. Ancak daha sonra kullanılabilir.

1. Dizi tanımlanırken _(alt tire) haricinde özel karakterler ve boşluk kullanılmaz.

1. Dizi tanımlarken Türkçe karakterlerin kullanılması çıkabilecek problemlerden dolayı önerilmez. Küçük “i” veya büyük “I” harfinin kullanılmasında herhangi bir sakınca yoktur.

1. Değişken isimleri küçük büyük harf duyarlılığı vardır. $gunler ile $gunleR değişkenleri farklı değişkenlerdir.

Resim 3.2: Diziler tanımlarken uyulması gerek kurallar.

Dizi çağırılırken dizinin adı yazıldıktan sonra “[]“ köşeli parantez içerisine dizinin kaçıncı elamanını çağırmak istiyorsak o rakamı yazılması gerekir. Dizilerin eleman sırası “1” birden değil “0” sıfırdan başlar. Köşeli parantez içerisine yazılan değere dizinin eleman sırası (index) denir.

Resim 3.3: Dizi elemanını çağırma

Programlama dillerinin genelinde bir diziye sadece tek tip veri tanımlanabilir. PHP’nin esnek yapısı sayesinde farklı tip verileri tek diziye tanımlanabilir.

Resim 3.4: Farklı tip verileri tek dizi içerisin tanımlama

DİZİ TANIMLAMA METOTLARI

PHP’de birçok dizi tanımlama şekli vardır. Diğer dizi tanımlamaları örneklerler aşağıda verilmiştir.

Aşağıdaki örneklerin hepsinde farklı yollarla $gunler adlı dizinin ilk elemanına “Pazartesi” ikinci elemanına “Salı” değeri atanmıştır. Daha sonra ekrana $gunler dizisinin ikinci elemanını (dizilerde sıralama “0” sıfırdan başladığı için “1” yazdık) ekrana yazdırılmıştır.

Resim 3.5: Dizi tanımlama şekilleri-1

Resim 3.6: Dizi tanımlama şekilleri-2

Dizi adını yazıp köşeli parantez “[]” içerisine değer atamak istediğimiz elamanın sırasını (index) yazarak diziyi tanımlayıp değer atabiliriz.

Resim 3.7: Dizi tanımlama şekilleri-3

PHP’de dizinin index değerinin belirtilme zorunluğu yoktur. Eğer dizinin index değeri verilmemişse index değeri otomatik olarak sıradaki sayı olur. Dizi daha önceden tanımlanmamışsa index değeri “0” sıfır olur.

Yukarıdaki örnekte $gunler[] = “Pazartesi” yazılan satırın üstünde $gunler adında dizi tanımlanmadığı için $gunler dizisinin “0” sıfırıncı index değeri “Pazartesi” oldu. $gunler[] = “Salı” yazılan satırın üstünde $gunler dizisi tanımlanıp “0” sıfırıncı index atandığı için $gunler dizisinin “0” sıfırdan sonraki sayı olan “1” birinci index değeri “Salı” olmuştur.

Dizi adını yazıp köşeli parantez “[]” köşeli parantez içerisine hiçbir değer yazmazsak; eğer daha önceki satırlarda dizi tanımlanmamışsa dizinin “0” sıfırıncı, tanımlanmışsa sıradaki elemana değer atanır.

Resim 3.8: Dizi tanımlama şekilleri-4

PHP’de dizilerin index değerlerinin sayısal bir değer olması zorunluluğu yoktur.

Resim 3.9: Dizi tanımlama şekilleri-5

Resim 3.10: Dizi tanımlama şekilleri-6

Çok Boyutlu Diziler

Ünitenin başında dizileri değişken grupları olarak tanımlamıştık. Grupları kendi içinde gruplarsak çok boyutlu diziler elde etmiş oluruz.

Resim 3.11: iki boyutlu dizi örneği

Yukarıdaki örnekte iki boyutlu dizi örneği verilmiştir. Dizinin boyutunu öğrenmek için dizide en fazla kaç tane köşeli parantez olduğuna bakılması gerekir. Yukarıdaki örnekte köşeli parantez “[]” en fazla iki olduğu için dizinin boyut sayısı “2” ikidir.

Farklı bir bakış açısı olarak dizileri tablolara benzetebiliriz.

Aşağıdaki Resim 3.11’de tek boyutlu bir dizinin tabloya benzetildiğinde nasıl bir görünüm oluşacağı örneği verilmiştir.

Resim 3.12: Tek boyutlu dizinin tabloya benzetimi

Resim 3.13: iki boyutlu dizi örneği

Tek boyutlu bir diziyi tabloya benzettiğimizde tabloda sadece satırlardan oluştuğunu önceki örneğimizde görmüştük. Eğer dizimiz iki boyutlu ise satırları bir boyut kolonları da ikinci bir boyut olarak algılayabiliriz.

DİZİ FONKSİYONLARI

count()

Dizi içerisinde kaç eleman olduğunu öğrenmek için kullanılan fonksiyondur. Dönüş olarak sayısal bir değer döndürür.

Kullanımı: count(dizi)

Resim 3.13: count fonksiyonu

array_merge()

Bu fonksiyona iki veya daha çok diziyi birleştirmek için kullanılır.

Kullanımı: array_merge(dizi_1, dizi_2, dizi_3, ….., dizi_n)

Resim 3.14: array_merge fonksiyonu

Yukarıdaki örnekte $dizi_1 ve $dizi_2 dizileri değer atanarak tanımlanmış $yeni_dizi ise içeriği boş olarak tanımlanmıştır. Daha önceden öğrenmiş olduğumuz count() fonksiyonunu $yeni_dizi dizisinin eleman sayısını ekrana yazdırdığımızda ekrana “0” yazılmıştır. Daha sonra array_merge() fonksiyonu ile $dizi_1 ve $dizi_2 dizilerinin $yeni_dizi dizisinde birleştirip ekrana dizinin eleman sayısını yazdırdığımızda ekrana “5” yazılmıştır.

array_push()

Bu fonksiyon dizinin sonuna eleman veya elemanlar eklemek için kullanılır.

Kullanımı: array_push(dizi, eleman_1, eleman_2, eleman_n)

Resim 3.15: array_push fonksiyonu

Yukardaki örnekte önce 3 elemanlı bir dizi tanımlanmış ve eleman sayısı ekrana yazdırılmıştır. Daha sonra bu dizinin sonuna iki array_push fonksiyonu ile iki eleman daha eklenmiş, eleman sayısı ekrana yazdırılmıştır.

array_shift()

Bu fonksiyon dizinin ilk elamanını silmek için kullanılır. Dizinin ilk elemanı silindikten sonra dizinin index değerleri tekrar sıfırdan sıralınır. Yani index değeri “1” olan “0” olur, “2” olan “1” olur ve bu böyle devam eder.

Kullanımı: array_shift(dizi)

Resim 3.16: array_shift fonksiyonu

Yukarıdaki örnekte üç elemanlı dizi tanımlanıp dizinin ilk elemanı ekrana yazdırıldıktan sonra dizinin ilk elemanı silinerek tekrar dizinin ilk elemanı ekrana yazdırılmıştır.

array_unshift()

Bu fonksiyon array_push fonksiyonunda olduğu gibi diziye yeni eleman eklemek için kullanılır. Fakat array_push fonksiyonu elemanı dizinin sonuna eklerken array_unshift ise dizinin başına ekler.

Kulanımı: array_unshift(dizi, eleman_1, eleman_2, ……, eleman_n)

Resim 3.16: array_unshift fonksiyonu

Yukardaki örnekte üç elemanlı bir dizi tanımlanmış ve dizinin birinci (“Ahmet”) elemanı ve ikinci (“Mehmet”) elemanı ekrana yazılmıştır. Daha sonra diziye iki eleman (“Ayşe”, “Fatma”) daha eklenmiştir. Ekleme işlemi array_unshift ile yapıldığından dolayı elemanlar dizinin başına eklenmiştir.

in_array()

Bu fonksiyon verilen bir değerin dizinin değerleri içerisinde olup olmadığını kontrol eder. Büyük küçük harf duyarlılığı vardır. Sadece mantıksal ifade olan true/false cevaplarından birini döndürür. Cevap true ise aranan değer dizi içerisinde vardır false ise yoktur.

Kullanımı: in_array(aranacak değer, aranacak dizi)

Resim 3.16: array_unshift fonksiyonu

Yukardaki örnekte üç elemanlı bir dizi tanımlanarak in_array fonksiyonu ile önce “Ahmet” daha sonra da “Fatma” kelimeleri dizi içerisinde aranmıştır. Sonuç ekrana yazdırıldığında “Ahmet” kelimesi dizinin içerisinde olduğu için ekrana “1” bir yazılmıştır. “Fatma” kelimesi olmadığı için ekrana hiç bir şey yazılmamış. Daha sonra dönen değer daha önceki ünite gördüğümüz var_dump fonksiyonu ile ekrana yazdırılmıştır.

array_search

Bu fonksiyonda in_array fonksiyonunda olduğu gibi dizi değerleri içerisinde arama yapar fakat dönüt olarak dizinin index değerini döndürür. Eğer dizi içerinde aranan değer bulunamazsa false döndürür. Büyük küçük harf duyarlılığı vardır.

Kullanımı: array_search(aranacak değer, aranacak dizi)

Resim 3.17: array_search fonksiyonu

array_slice

Bu fonksiyon dizi içerisinde belirli index değerlerinin alınması sağlar. Dikkat edilmesi gereken husus index değerlerinin “0” sıfırdan başlamasıdır.

Kullanımı: arra_slice(dizi, başlangıç değeri, bitiş değeri)

Resim 3.18: array_slice fonksiyonu

sort()

Bu fonksiyon dizi içerindeki verinin alfabetik olarak a dan z ye doğru sıralanmasını sağlar. Eğer dizi içerindeki veriler sayı ise sayıları küçükten büyüğe doğru sıralar.

Kullanımı: sort(dizi)

Resim 3.19: sort fonksiyonu

rsort()

Bu fonksiyon dizi içerindeki verinin alfabetik olarak z den a ya sıralanmasını sağlar. Eğer dizi içerindeki veriler sayı ise sayıları büyükten küçüğe doğru sıralar.

Kullanımı: rsort(dizi)

Resim 3.20: rsort fonksiyonu

reset()

Bu fonksiyon dizinin sadece ilk elamanını yani “0” sıfırıncı elamanını almamızı sağlar.

Kullanımı: reset(dizi)

Resim 3.21: reset fonksiyonu

implode()

Bu fonksiyon bir dizinin içerisindeki değerleri arasına bizim belirlediğimiz bir karakter koyarak metin (string) haline dönüştürmeye yarar.

Kullanımı: implode(ayrıştıracak karakter, dizi)

Resim 3.22: implode fonksiyonu

explode()

Bu fonksiyon implode fonksiyonunu tam tersi işlem yapmaktadır. Metin (string) olan bir ifadeyi belirlediğimiz bir karaktere göre parçalayıp dizi oluşturmamızı sağlar.

Kullanımı: explode(ayrıştıracak karakter, metin)

Resim 3.23: explode fonksiyonu

IF YAPISI

IF yapısı en basit hali ile verilen şart doğru ise bir dizi işlemin yapılmasıdır.

Kullanımı: if(kosul){ yapılacak işlem }

Resim 4.1: if yapısı

Yukardaki örnekte $kosul değişkenine true (doğru) değeri atandığı için if koşulundan sonraki süslü parantez “{}” içerisindeki kod satırlarını çalıştırdı.

Resim 4.2: if yapısı

Yukardaki örnekte $kosul değişkeninin değeri false (yanlış) olduğu için if koşulundan sonraki süslü parantez “{}” içerisindeki kod satırı çalıştırılmadı.

KARŞILAŞTIRMA OPERATÖRLERİ

2. Ünitemizde karşılaştırma operatörlerinden bahsetmiştik. Karşılaştırma operatörleri iki veya daha çok veriyi belirleyeceğimiz şarta göre karşılaştırıp bize true/false (doğru/yanlış) tipi veri döndüren yapılardır.

Bu operatör kullanmak için iki verinin arasına operatörü yazmak yeterlidir.

Karşılaştırma operatörlerinin listesi aşağıdaki listede verilmiştir.

Tablo 4.1. Karşılaştırma operatörleri

operatör

açıklama

==

Eşitse

===

Denkse

<>

Eşit değilse

!=

Eşit Değilse (<> operatörü ile aynıdır)

!==

Denk değilse

<

Küçükse

>

Büyükse

<=

Küçük veya Eşitse

>=

Büyük veya Eşitse

Tablo 4.3. Karşılaştırma operatörlerinin kullanımı

Yukardaki örnekte $değer_1 değişkenine “5 > 4” ifadesi değer olarak atanmıştır. Bu ifadenin anlamı beş (5), dört (4) ten büyükse $deger_1 değişkeninin değeri true “doğru” olsun. Beş (5), dört (4) ten büyük olduğu için $deger_1 değişkeninin değeri true “doğru” dur. $deger_2 değişkenine atanan karşılaştırma operatörü (“5<4”) doğru olamadığı için yani beş (5) dört (4) ten küçük olmadığı için $deger_2 değişkeninin değeri false “yanlış” tur.

KARŞILAŞTIRMA OPERATÖRLERİ İLE IF YAPISI

Karşılaştırma operatörleri verileri karşılaştırıp bize true/false (doğru/yanlış) cevabı döndürdüğü için biz bu operatörleri IF yapısında kullanabiliriz. O zaman IF yapısı içerisinde karşılaştırma operatörlerinin kullanarak işlem yapabiliriz.

Aşağıdaki örnekte $sayi adlı bir değişken tanımlanmıştır. IF yapısı içerinde karşılaştırma operatörü olan büyüktür “>” kullanılarak koşul yerine $sayi > 5 yazılmıştır. $sayi > 5 karşılaştırma operatöründen cevap olarak $sayi değişkeni beş (5) ten büyük olduğu için true dönecektir. Koşul sağlandığı için süslü parantezler içerisindeki kod satırı veya satırları çalıştırılacaktır.

Resim 4.4: Karşılaştırma operatörleri bulunduran if yapısı kullanımı

Karşılaştırma operatörleri listede verilen operatörlerin açıklamaları verilse de denklik ile eşitlik birbirlerine benzedikleri için karıştırılabilmektedir. PHP’de denk ile eşittir arasındaki fark denk operatörünü “===” kullandığımızda cevabın true (doğru) dönebilmesi için verilerin tipinin de aynı olması gerekir.

Resim 4.5: Denk ve eşittir arasındaki fark-1

Yukardaki örnekte $sayi değişkenine sayı (integer) tipi olan üç (3) değeri atanmıştır. İlk IF yapısında ise $sayi değişkeni metin (string) tipi üç (3) ile eşittir “==” operatörü kullanılarak karşılaştırıldığı için IF koşulundaki işlemler gerçekleşmiştir. Ancak ikinci IF yapısında karşılaştırma denklik “===” operatörü ile yapıldığı için IF koşulu gerçekleşmemiş ve işlemler yapılmamıştır.

Resim 4.6: Denk ve eşittir arasındaki fark-2

Sonuç olarak iki verinin eşit “==” olabilmesi için sadece değerlerinin eşit olması yeterli iken denk “===” olabilmesi için hem değerin hem de veri tipinin aynı olması gerekir.

IF/ELSE YAPISI

Daha önceki örneklerimizde koşul verdik eğer koşul geçerli ise işlem yaptırdık. Şimdi ise IF yapısına koşul vereceğiz koşul geçerli ise bir işlem yapmasını eğer koşul geçerli değilse başka bir işlem yapmasını isteyeceğiz.

ELSE yapısı tek başına kullanılamaz. ELSE yapısı kullanılmak isteniyorsa IF yapısını kullanmak zorundayız.

Resim 4.7: IF/ELSE yapısı

Yukardaki örnekte Resim 4.4 deki örnekten farklı olarak else kodunu kullanmamıza rağmen sonuç aynı oldu. Bunu nedeni koşul yani $sayi > 5 hala geçerli olduğu için else kısmında bulunan hiçbir işlem yapılmaz. O zaman koşulun geçersiz olması için $sayi değişkeninin değerini üç (3) yapalım.

Resim 4.8: IF/ELSE yapısı-2

Yukardaki örnekte $sayi değişkeninin değer üç (3) olduğu için $sayi > 5 karşılaştırma operatöründen cevap olarak false “yanlış” yanıtı dönmüştür. Bu yüzden dolayı IF yapısının süslü parantez “{}” içerisindeki işlem yapılamamış ELSE yapısının süslü parantez “{}” içerisindeki işlem gerçekleşmiştir.

IF/ELSEIF YAPISI

ELSE yapısında IF koşulu sağlanmıyorsa yapılacak işlemleri yazıyorduk. ELSEIF yapısında ise IF koşulu sağlanmıyorsa başka koşul öne sürebilmek için kullanılır.

Resim 4.9: ELSEIF yapısı

Yukardaki örnekte $sayi değişkeni 3 olarak tanımlanmış. Daha sonra IF yapısını içerisindeki koşul $sayi değişkeni 5 den büyük olmadığı için sağlanamamış, elseif yapısındaki koşul $sayi == 3 koşulu sağlandığı için ekrana “sayı 3” değeri yazılmıştır. ELSE yapısını üstünde bulunan koşullardan herhangi biri gerçekleştiği için ELSE yapısındaki işlemler gerçekleştirilmemiştir.

Bitişik yazılan ELSEIF ile ayrı yazılan ELSE IF ifadeleri her ne kadar yaptıkları işlem aynı gibi gözükse de birbirinden farklı ifadelerdir. ELSEIF; eğer IF şartı sağlanmazsa ve ELSEIF şartı sağlanırsan işlem yapar, ELSE IF ise; ELSE içerisinde yazılmış IF yapısıdır.

MANTIKSAL OPERATÖRLER

Mantıksal operatörler birden fazla karşılaştırma operatörünü bir aramada kullanmak veya karşılaştırma işleminden gelen cevabı tersine çevirmek için kullanılır.

Tablo 4.2: Mantıksal operatörler

operatör

açıklama

!

NOT yani “değilse”

&&

AND yani “ve”

||

OR yani “veya”

OR

OR yani “veya”

AND

AND yani “ve”

NOT (!) Operatörü

Bu operatör boolean tipi değişkenin önüne eklendiği zaman değişkenin değeri true ise false, false ise true yapar.

Resim 4.10: NOT Operatörü

Yukardaki örnekte $kosul_1 değeri true olarak atanmış ve var_dump fonksiyonu kullanılarak değişkenin türü ve değeri ekrana yazdırılmıştır. Aynı işlem $kosul_2 için uygulanmış ancak $kosul_2 değişkenine değer atanırken NOT “!” operatörü kullanıldığı için $kosul_2 değişkenine atanan değer false olmuştur.

IF yapısında eğer koşul sağlanırsa işlem yapıyordu. Eğer IF yapısından NOT (!) operatörünü kullanırsak koşul sağlanmazsa işlemleri gerçekleştirir.

Resim 4.11: NOT Operatörü

Yukardaki örnekte $sayi > 5 koşulu $sayi değişkeninin değeri 3 olduğu için sağlanmamaktadır. Ancak koşulun başında NOT “!” operatörü olduğundan dolayı ekrana “Sayı 5 den büyük değil” ifadesi yazılmıştır. İfadenin bütününü kapsaması için $sayi > 5 ifadesini parantez “()” içerisinden yazdık.

AND (&&) Operatörü

Bu operatör birden fazla koşulun aynı anda sağlanması durumunda dönüt olarak true yanıtını döndürür. Yani her hangi bir koşul sağlanmazsa false yanıtını döndürür. AND operatörü iki şekilde ifade edilebilir. Bunlar; AND veya && dir.

Resim 4.12: AND operatörü

Yukardaki örnekte ilk IF yapısında $sayi > 2 ve $sayi_2 < 8 koşullarının ikisi birden sağlandığı için ekrana “Koşul sağlandı” ifadesi yazdırıldı. Ancak ikinci IF yapısında $sayi_1 > 2 koşulu sağlanmasına rağmen $sayi_2 < 2 ifadesi sağlanmadığı için ekrana hiç bir şey yazdırılmadı.

OR (||) Operatörü

Bu operatör birden fazla koşuldan herhangi birinin sağlanması durumunda dönüt olarak true yanıtı döndürür. Bütün koşullar sağlanmazsa false yanıtı döndürür. OR operatörü iki şekilde ifade edilir. Bunlar; OR veya || dir.

Resim 4.13: OR operatörü

Yukardaki örnekte il IF yapısının ilk koşulu $sayi_1 > 2 sağlanıyor, ikinci koşulu $sayi_2 < 2 koşulu sağlanmıyor. Koşullardan sadece biri sağlanmasına rağmen ekrana “Koşul sağlandı” ifadesinin yazdırılma nedeni “OR” operatörüdür. İkinci IF yapısında ise iki koşul da sağlanmadığı için ekrana hiç bir şey yazdırılmadı.

OR ve AND Operatörlerinin Beraber Kullanımı

OR ve AND operatörleri aslında matematiksel bir işlemdir. OR operatörü toplama, AND operatörü ise çarpma işlemidir.

Sonucu true olan koşulları bir “1”, false olan koşulları sıfır “0” olarak kabul edecek olursak, iki şartın arasındaki operatör AND ise çarpma, OR ise toplama işlemi yaptığımızda çıkan sonuç 0 “sıfır” dan büyük ise IF yapısında bulunan kodlar çalışacak, sıfır ise IF yapısında bulunan kodlar çalışmayacaktır. Tabi aynı matematiksel işlemlerde olduğu gibi burada da öncelik parantez varsa parantez içerisi daha sonra çarpma işlemi son olarak da toplama işlemi yapılır.

Resim 4.14: OR operatörü

Yukardaki örnekte IF yapısı aynı matematiksel bir işlem gibi ele alınmıştır. $isim_1 adlı değişken değeri “Ahmet” olduğu için bu şart bir “1” olarak kabul edilmiştir. $isim_2 adlı değişkenin değeri “Mehmet” olduğu için ve koşulda “Ahmet” değeri ile karşılaştırıldığı için ikinci şart sıfır “0” olarak kabul edilmiştir. $isim_3 adlı değişkenin değeri “Hasan” olduğu için bu şart da bir “1” olarak kabul edilmiştir. Daha sonra parantez içi önceliğine dikkat ederek (1+0)x1=1 işlemini yaptık. Sonuç sıfır “0” dan büyük olduğu için IF yapısı koşulu sağlandı kabul etti ve ekrana “Koşul sağlandı” yazıldı.

SWITCH/CASE YAPISI

Bu yapıda verilen değişkenin durumlarına göre işlem yapar. Eğer çok fazla IF/ELSEIF yapınız varsa SWITCH/CASE yapısı kullanmak avantajlıdır.

Kullanım şekli: switch(değişken){case “durum”: yapılacak işlemeler }

Resim 4.15: SWITCH/CASE yapısı

Yukardaki örnekte en basit kullanımı ile switch/case yapısı kullanılmıştır. Bu yapıda “switch” yapısının içerisindeki değişkenin “case” yapısındaki durumlara göre işlem yapılması sağlanır.

SWITCH yapısı içerinde sadece CASE yapısı değil DEFAULT yapısı da kullanılabilir. Bu yapı içerisindeki kodlar CASE yapılarındaki şartlar geçerli olsa da olmasa da uygulanır.

Resim 4.16: SWITCH/CASE yapısında DEFAULT kullanımı

Yukardaki örnekte $sayi değişkeninin değeri on “10” olarak atanmış. SWITCH yapısında $sayi değişkeni beş “5” olması durumunda ekrana “5 “ yazılması, on “10” olması durumunda da ekrana “10 “ yazılması istenmiştir. Son olarak da $sayi değişkeni ister beş “5” ister on “10” olsun veya farklı bir değer olsun yani değişkenin değerine bakılmaksızın ekrana “sayı” yazdırılmıştır.

DEFAULT yapısında yapılması gereken işlemler SWITCH yapısının hemen altında yapılabileceği düşünülebilir. Ancak SWITCH yapısında BREAK kodunu kullanırsak DEFAULT yapısı aynı ELSE yapısına benzeyecektir. BREAK kodu eğer IF veya SWITCH yapısının altında kullanılırsa kullanıldığı yerden itibaren IF veya SWTCH yapısını sonuna kadar olan hiç kodu çalıştırmaz.

Resim 4.17: SWITCH/CASE yapısında BREAK kullanımı

Yukardaki örnekte $sayi değişkene on “10” değeri atanmış ve SWITCH yapısına sokulmuştur. SWITCH yapısında önce $sayi değişken değerinin beş “5” olup olmadığı kontrol edilmiş değer beş “5” olmadığı için sonraki satıra geçilmiştir. Daha sonra değişken değerinin on “10” olup olmadığı kontrol edilmiş değer 10 olduğu için CASE yapısından sonraki işlem olan ekrana on “10” yazdırma işlemi gerçekleştirilmiştir. Ekrana yazdırma işleminden sonra BREAK kodu kullanıldığı için sonraki CASE yapıları veya DEFAULT yapıları hiç kontrol edilmeden SWITCH yapısının en sonuna gelinmiştir.

DÖnGÜLER

Programlamanın akışını belirleyen yapılardan biri de döngülerdir. Döngülerin kullanımının temel amacı birden fazla kez gerçekleştirilecek işlemlerin blok halinde yazılmasını sağlamaktır Bu sayede tekrarlanması gereken ifadelerin veya kod bloklarının tekrar tekrar yazılmasının önüne geçilmiş olur. Bu bölümde programlamada en sık kullanılan döngü deyimleri açıklanacaktır.

For Döngüsü

Program yazarken en çok kullanılan döngü deyimlerden biri for’dur. For döngüsü genel anlamıyla Bir değişkeni bir kod bloğunda verilen iki değer arasında belirli aralıklarla çalıştıran yapı olarak tanımlanabilir. For döngüsünde bir olayın kaç gerçekleştirileceği tek satırda 3 parametre ile belirlenir. Bu parametrelerden ilki; değişkene başlangıç değerinin atanmadığı yerdir. İkinci parametre ise döngünün geleceği ile ilgili kararların alındığı yani döngünün hangi şartlardan devam edeceğinin belirlendiği yerdir. Üçüncü ve son parametre ise genelde döngü değişkeninin arttırılması veya azaltılması işleminin yapıldığı yerdir. For döngüsü için genel söz dizimi aşağıdaki gibidir:

Bu işlemler for döngüsünün temelini oluşturur. Döngünün nasıl çalıştığı ise aşağıda bir örnekle gösterilmiştir.

· sayi değişkeni döngünün ilk turunda sadece bir defa oluşturulur.

· Eğer mantıksal ifade doğru ise (sayi<10) kod bloğu (echo $sayi) çalıştırılır.

· Değişken değeri güncellenir ve mantıksal ifade yeniden hesaplanır ($sayi++).

· Mantıksal ifade hala doğruysa kod bloğu yeniden çalıştırılır.

· Değişken değeri güncellenir ve mantıksal ifade yeniden hesaplanır ($sayi++).

· Mantıksal ifade (koşul) yanlış (false) olana kadar bu süreç devam eder.

Yukarıdaki örnek çalıştırıldıktan sonra ekran çıktısı aşağıdaki gibi olur.

For döngüsünü başka bir örnekle inceleyelim. Web sayfasına bir yazıyı farklı büyüklüklerde yazdırmak için bu döngüyü kullanalım.

For (değişken; mantıksal ifade; değişken değerinin güncellenmesi)

Değişkene başlangıç değeri atanır.

Döngü koşulu belirlenir. Koşulun doğru olması durumunda döngü çalışmaya devam eder.

Mantıksal ifade doğru (true) oldukça değişken değeri güncellenir.

Bu örnekte for döngüsü kullanılarak “PHP’de Döngüler Konusu” ifadesinin farklı büyüklüklerde yazılması sağlanmıştır. Döngü içerisinde yazı büyüklüğü (size) belirtilmeseydi verilen ifade koşul doğru oldukça (7 kere) web sayfasına aynı büyüklükte yazdırılacaktı. Bu şekildeki ekran görüntüsü aşağıdaki gibi olacaktır.

Ancak döngü kod bloğunda yazı büyüklüğünün her defa artması istenmiştir ve ekran görüntüsü aşağıdaki gibi oluşturulmuştur.

PHP’de döngü içerisinde döngü kullanılabilir. Bu yöntemle içte yer alan döngü, dışta yer alan döngüde tanımlanan ifadeye göre istenilen sayıda tekrar tekrar çalıştırılabilir. İçiçe döngüye aşağıdaki gibi bir örnek verilebilir.

Dıştaki döngüde “*” ifadesinin kaç kere yazdırılacağı döngüye sokulur. İçteki döngüde ise “*” ifadesinin her defasında bir tane fazla yazdırılması ve döngünün her adımında alt satıra (
) geçilmesi sağlanır.

While Döngüsü

While döngüsü, mantıksal bir ifade doğru olduğu sürece belli bir kod bloğunun tekrar tekrar çalıştırılması istendiğinde kullanılır. Bu yönden for döngüsüne benzemekle birlikte kullanımı for döngüsü kadar karışık değildir.

While döngüsü için genel söz dizimi aşağıdaki gibidir.

While (mantıksal ifade)

Deyim

ya da

While (mantıksal ifade)

{

Deyim 1

Deyim 2

}

Bu söz dizimine göre program akışı while döngüsüne geldiğinde döngü parantezindeki koşul ifadesi sorgulanır. Bu koşul ifadesi mutlaka True (Doğru) ya da False (Yanlış) değeri döndürmek zorundadır. Üretilen değer True olduğu takdirde kod bloklarındaki deyimler işlenmeye devam edilir. Eğer koşul ifadesinde üretilen değer false ise döngü bloğunun dışından program akışına devam edilir.

While döngüsünün for döngüsünden en belirgin farkı, for döngüsünde kullanılan döngü değişkeni yapısının while döngüsünde yer almamasıdır. Bu yapının yerine başlangıçta değeri bilinen bir sayı belirli bir koşula göre kontrol edilir ve koşul sağlanıyorsa döngü devam eder.

While döngüsünü bir örnek üzerinden inceleyelim. 1’den 10’a kadar olan sayıları while döngüsü kullanarak toplayalım ve ekrana yazdıralım.

Kod bloğundan da görüldüğü gibi program akışında döngüye girilmeden önce değişkenler tanımlanır ($sayi, $toplam). While döngüsüne girildiğinde ise sayi değişkeninin 10’dan küçük olup olmadığı kontrol edilir. Bu kontrol sonucunda elde edilen sonuç doğru (true) isedöngü içerisindeki deyimler işlenir. Önce sayi değişkeni 1 artırılır sonra bu değişkenin değeri toplam değişkeninin değeri ile toplanır ve toplam değişkeninin yeni değeri elde edilir. Elde edilen her sonucun (toplam değişkeni) ekrana yazdırılması sağlanır. Bu süreç mantıksal ifade doğru oldukça işlemeye devam eder. Program çalıştırıldığında ise web sayfasında aşağıdaki gibi bir görüntü elde edilir:

Örnekte şart ifadesinde kullandığımız değişken (sayi) döngünün her seferinde 1 arttırılmıştır. For döngüsünde olduğu gibi while döngüsü de bittikten sonra değişken değeri, döngü içinde son yazdırılan değerden 1 fazla olur. Ayrıca C# ve Java gibi diğer programlama dillerinde döngü içinde tanımlanan değişken döngü dışında kullanılmaya çalışıldığında hata verir. PHP’de böyle bir sorun yoktur. Çünkü nerede olursa olsun tanımlanan değişken istenilen yerde tekrar çağrılabilir.

Başka bir örnekte de while döngüsünü kullanarak bir dizi içerisinde bulunan elemanları ekrana yazdıralım. Program kodları aşağıdaki gibi olacaktır.

Program çalıştırıldığında ise aşağıdaki gibi bir görüntü elde edilir.

Do-While Döngüsü

Do-While döngüsünde diğer döngülerden farklı olarak koşul ifadesi döngünün sonunda kontrol edilir. Böylece döngü koşulun sağlanıp sağlanmadığına bakılmaksızın en az bir kez çalışır. Ardından koşul ifadesi kontrol edilir ve doğru sonuç alındığı müddetçe döngü çalışmasına devam eder.

Do-While döngüsü için genel söz dizimi aşağıdaki gibidir.

Do

{

Deyim 1

Deyim 2

}

While (mantıksal ifade)

Do-While döngüsünü kullanarak 1’den 10’a kadar olan sayıları ekrana yazdıralım. Aşağıdaki örnek kod bloğundan da görüldüğü gibi program akışı döngü içerisine geldiğinde sayi değişkeninde tutulan değer ekrana yazdırılacaktır. Ardından koşul ifadesi kontrol edilir ve ifade doğru olduğu müddetçe ekrana sayi değşkeninde tutlan değerler yazdırılır.

Foreach Döngüsü

Foreach döngüsü genellikle Array (dizi) ile birlikte kullanılan bir döngüdür. Diziler programlamada önemli bir yere sahiptir. Dizilerle işlem yapılırken for, while gibi döngüler kullanılabildiği gibi foreach döngüsü de kullanılabilir. Ancak foreach döngüsünde diğer döngülerde olduğu gibi herhangi bir başlangıç ve bitiş değeri belirtmeye gerek yoktur. Bu döngü, dizinin eleman sayısı kadar döner ve kod bloğunda istenen işlemler yapılır. Foreach döngüsü için genel söz dizimi aşağıdaki gibidir:

Bu söz dizimine göre dizi_ifadesi ile belirtilen dizi üzerinde döngü oluşturulur. Her yinelemede sıradaki elemanın değeri, değer değişkenine atanır ve dizi indisi 1 artırılır. Bu şekilde döngünün bir sonraki turunda dizinin bir sonraki elemanına bakılması sağlanır.

Foreach (dizi_ifadesi as değer)

{

Yapılacak işlemler

}

Örnek olarak, haftanın günlerini bir dizi değişkenine atayalım ve bu günleri foreach döngüsü kullanarak ekrana yazdıralım.

Dizilerde tutulan elemanlara ulaşmak için dizi indisleri kullanılır ve indisler 0’dan başlar. Bu örneğimizde dizide 7 eleman olduğu için dizi indisi 0 ile 6 arasında değer almaktadır. Böylece bu örnek için döngü başlangıç değeri 0, bitiş değeri ise 6 olarak belirlenmiştir. Programın ekran görüntüsü ise aşağıdaki gibidir:

Aynı örneği for döngüsüyle yaptığımızda kod bloğu aşağıdaki gibi olmalıdır:

Bu iki döngü arasında çok fark yokmuş gibi görünse de döngülerde diziler kullanılacaksa foreach döngüsünün kullanımı çok daha kolay ve pratiktir.

Bazı durumlarda foreach döngüsü içerisinde dizi index numaralarının da yazdırılması istenebilir. Bu durumlarda foreach ilk kullanımına ek olarak index numarasının da bulunduğu aşağıdaki gibi 3 parametre alır.

Foreach (dizi_ifadesi as değer => değişken_adi)

{

Yapılacak işlemler

}

Haftanın günlerinin bir dizide tutulduğu ve bu dizinin foreach döngüsüyle yazdırılmıştı. Şimdi günlerin hangi dizi indexinde bulunduğunu göstermek için foreach döngüsünün farklı yapısını kullanalım.

Foreach bu yapıda kullanılırsa dizi elemanlarının yanında aşağıdaki gibi index numaraları görüntülenir.

Akış Kontrol Deyimleri

PHP’de program akışını farklı noktalara yönlendirmek için bazı anahtar sözcükler kullanılmaktadır. Program akışında belli şartlar sağlandığı zaman döngüden çıkılabilir ya da bir sonraki adıma geçilebilir. Bu ve buna benzer durumlarda döngü komutları kullanılmaktadır.

Continue

Continue anahtar sözcüğü, döngü yapısının içindeki kodları atlatarak bir sonraki adıma geçmek için kullanılır. Örneğin bir dizi içerisinde bulunan sayıları 5’e tam bölünen sayılar hariç ekrana yazdıralım. Bu durumda döngü içerisinde if koşul deyimi ve bunun içerisinde continue anahtar sözcüğü kullanılmalıdır. İf koşulunda gelen sayının mod 5 değeri 0’a eşitlenir ve continue ile devam edilir. Bu tanıma göre örnek kod bloğu aşağıdaki gibi olacaktır.

Continue anahtar sözcüğü kullanılarak 5’e tam bölünen sayılar hariç diğerleri ekrana yazdırılmıştır.

Break

Break anahtar sözcüğü; while, do-while, for, foreach, switch ifadelerini sonlandırmak için kullanılır. Döngülerde, break anahtar sözcüğüne rastlandığı anda döngüden çıkılır ve program döngü bloğundan sonraki ilk deyimle akışına devam eder. Break anahtar sözcüğünü bir örnekle gösterelim. Örnekte dizinin bütün elemanları için döngü çalışır. If şartını sağlayan ilk değere gelindiğinde break komutu çalışır ve döngü sonlandırılır.

Break anahtar sözcüğü kullanılarak 5’e tam bölünen dizi elemanında gelindiğinde döngü sonlandırılmıştır.

KULLANICI TANIMLI FONKSİYONLAR

Giriş bölümünde ön tanımı yapılan fonksiyonlardan ilk olarak basit yapıda olanları inceleyebiliriz. Bu tür fonksiyonlar geliştiriciler tarafından oluşturulan ve işlemlerini tek bir seferde çalışarak bitiren yapıdadır. Kullanım olarak en fazla bu tür fonksiyonlardan yararlanılır. Aldığı iki parametreyi kullanarak toplama işlemini gerçekleştiren bir fonksiyon “Kullanıcı Tanımlı Fonksiyon” olarak düşünülebilir. Kullanıcı tanımlı fonksiyonlar, kendi içlerinde farklı fonksiyonlardan da yararlanabilir. Örneğin; çarpma işlemi için üretilmiş bir fonksiyon, kendi içerisinde toplama işlemi için üretilmiş bir başka fonksiyonu çalıştırarak sonuçtan yararlanabilir. Bu tür fonksiyonları kendi içerisinde dört parçaya ayırarak incelebiliriz:

1. Fonksiyonun adı

2. Parametreler

3. İşlem alanı

4. Sonuç bildirimi

Belirtilen dört parametreden sadece fonksiyon adının belirtilmesi ile bir fonksiyon elde edilebilir. Örnek olarak;

Şekil 6.1: Temel fonksiyon görünümü

şeklinde olabilir. Bu tür –geri bilgi dönüşü olmayan– fonksiyonlara “Statik” veya “Durağan” fonksiyonlar diyebiliriz ve genellikle fiziksel dosyalar üzerinde yapılan işlemlerde kullanılırlar.

Dikkatle incelenecek olunursa; fonksiyonun başlangıcında bir fonksiyon olduğunu tanımlamak için “function” ifadesi kullanılmaktadır. Bu ifade, PHP yorumlayıcısının fonksiyonu doğru anlayabilmesi için gereklidir. Ayrıca bu şekilde fonksiyonlar “class” ve “echo” gibi diğer sabitlerden ayrılacaktır. Bu tanımlamayı matematik dersini anlattığınız sınıfta fonksiyon olması için seçtiğiniz kişinin bir yaka kartı olarak düşünebilirsiniz. Bu sayede onu gördüğünüzde bir fonksiyon olduğunu anlayabileceksiniz.

İkinci önemli kısım ise fonksiyonun adıdır. Fonksiyon adını, seçtiğiniz öğrencinin yaka kartında yazan isim olarak düşünebilirsiniz. Bir fonksiyon adlandırılırken bazı kurallara uyulmak zorundadır. Fonksiyon adı üretilirken uyulması gereken kuralları ezberlemek yerine; öğrenme sürecinde sadece a-Z arasındaki harflerden yararlanmanız hızlı ilerleyebilmenizi sağlayacaktır. Ayrıca; fonksiyon adları üretirken bazı kalıplara uymanız; geliştirdiğiniz uygulamanın daha kolay anlaşılabilir olmasına yardım edecektir. Bu konu, ünitenin ilerleyen kesimlerinde anlatılacaktır.

Bir fonksiyonda zorunlu olarak olması gereken diğer kısım ise ard arda açılmış normal “( )” ve güzel “{ }” parantezlerdir. Bu parantezler fonksiyonun parametre ve işlem gövdesinin belirtilmesi için kullanılır.

Parametreler

Fonksiyonlarda işlemler için gerekli olan değişkenler parametreler yardımıyla gönderilir. Bu durumu önceki örnekle birleştirebiliriz. Bunun için, işlem yapması için yaka kartında adı yazılı olan seçilmiş öğrencinin iki sayıyı toplayarak sonucu bildirmesini ele alalım. Elimizdeki durum şu şekildedir: biz öğrenciye iki sayı veriyoruz. Cevap olarak ise bir sayı geri alıyoruz. Verilen iki sayının her birisi bir parametre olacaktır. Bu parametrelerin PHP dilinde yazımı ise aşağıdaki gibi gösterilebilir.

Şekil 6.2: İki parametreli fonksiyon

PHP dilinde parametreler, tıpkı değişkenler gibi tanımlanır. Parametre olarak belirtilecek değerler “dolar ($)” işareti ile başlar ve bir harf ile devam eder. Değişken veya parametre adlarında dolar simgesinden sonra harf dışında sadece “alt tire (_)” kullanılabilir. Ancak asla sayı kullanılamaz. Yine hızlı ilerleyebilmek için sadece a-Z aralığında kalan bir harf kullanmanız tavsiye edilir.

Fonksiyonlar için ihtiyaç duyulduğu kadar parametre tanımlanabilir. Sadece parametrelerin virgüllerle ayrılması yeterli olacaktır.

İşlem Alanı

Fonksiyona gönderilen parametrelerden yararlanarak gerekli işlemlerin yapıldığı alandır. Bu alanda geliştirilen kodların fazla uzun olmamasına dikkat edilmelidir. Mümkünse 10 satırdan fazla olan fonksiyon işlemleri; yeni bir fonksiyona taşınmalıdır. Bu durum bir zorunluluk olmasa da gelişmiş editör uygulamalarının (IDE) tavsiyeleri ve yazılan kodların kolay anlaşılması için yararlı olacaktır.

İşlem alanları güzel parantez “{ }” ile açılıp kapatılmak zorundadır. Parantezler arasında yazılacak kodların ise genel PHP kod yazım standartlarından ayrı olarak özel bir yapıya sahip olması gerekmez.

Fonksiyonların işlem alanları daha önceki örneğimizde seçtiğiniz öğrenciye öğretilen bilgiyi ifade etmektedir. Bu noktada dikkat edilecek durum ise; seçilen öğrencinin sizin öğrettiğiniz bilginin dışında herhangi bir birikime sahip olmamasıdır. Ancak; başka öğrencileri de farklı işlemler için fonksiyona dönüştürürseniz; öğrenciler kendi aralarında da bilgi alış-verişinde bulunabilirler.

Basit bir toplama işlemini yapan fonksiyon için kod örneği aşağıdaki gibi olabilir.

Şekil 6.3: Basit bir toplama işlemi fonksiyonu

Örnekte dikkat edilecek olursa iki önemli durum söz konusudur. Bunlardan ilki, fonksiyon içinde herhangi bir sayı değerinin belirtilmemiş olmasıdır. Yani; öğrenciye öğretilen bilgi; aslında toplama işlemini nasıl yapacağı değil; toplama işlemini yapmasıdır. Bunun nedeni ise, toplama işleminin PHP tarafından zaten bir önbilgi olarak geliştiriciye sunulmasıdır.

İkinci önemli nokta ise fonksiyonun geriye herhangi bir cevap göndermesi için komut içermemesidir. Fonksiyon bu haliyle bir işe yaramayacaktır. Çünkü toplama işlemini gerçekleştirmesine rağmen herhangi bir sonuç geriye göndermemektedir.

Peki; fonksiyonu işlem sonucunu geri bildirmesini kodlamak için ne gereklidir. Bu sorunun cevabı, İngilizce “geri dönmek” fiilinin karşılığı olan “return” ifadesinin kullanılmasıdır.

Fonksiyonlarda, “return” ifadesi ilk çalıştırıldığı anda daha sonra yazılan kodları iptal ederek cevabı, fonksiyonu çağıran satıra geri gönderir. Bu nedenle, “return” ifadesini bir çıkış kapısı olarak görmekte herhangi bir mahsur yoktur. İfadenin örneğimize eklenmiş hali ise aşağıdaki gibi olacaktır.

Şekil 6.4: Geriye cevap gönderen kullanıcı tanımlı fonksiyon

Yorumlama

Uygulamalarınızda geliştirdiğiniz fonksiyonların PHP tarafından hangi adımlarda yorumlandığını bilmeniz sizlerin daha hızlı ve doğru bir şekilde fonksiyonlar üretebilmenize olanak verecektir. Bu nedenle bir önceki örnekte yazdığımız fonksiyonun PHP tarafından yorumlanmasını inceleyelim. Öncelikle her bir adımı sayılarla ifade ederek başlayalım.

1

Şekil 6.4: Geriye cevap gönderen kullanıcı tanımlı fonksiyon

17

15

18

10

13

8

9

12

14

16

11

3

2

4

5

7

6

Öncelikle PHP tarafından okunan 1 numaralı kelime ile PHP, artık bir fonksiyonu hafızasına alacağını anlamaktadır. Bu noktadan sonra sırasıyla fonksiyon adını, parametre tanımlamasını ve işlem gövdesini bekleyecektir.

1 numaralı “function” kelimesinden sonraki “boşluk” ile 3 nolu “normal parantez açılışı” arasında kalan kısmı (2 nolu kısım), fonksiyon adı olarak kabul edecektir. Yani 2 ve 3 numaralı kısımlar arasında örnekteki gibi bir boşluk olması zorunlu değildir.

2 numaralı foksiyon adı (topla) belirlendikten sonra 3 numaralı normal parantez (“(“) açılışını parametre tanımlamasının başlangıcı olarak kabul eden PHP, parantezin kapandığı 7 nolu (“)”) karaktere kadar olan kesimi parametre tanımlamaları olarak kabul edecektir.

4 numaralı değişkeni ($sayi1) parametre olarak tanımlayan PHP, 5 numaralı virgülü okuduktan sonra bir başka parametrenin daha var olduğunu anlayacak ve 6 numaralı değişkeni ($sayi2) parametre olarak tanımlayacaktır. Eğer 6 numaralı değişkenden sonra bir virgül daha olsaydı bir parametre daha olduğunu anlayacak ve tanımlama yoluna gidecekti.

Aslında PHP, 3 numaralı normal parantez açılmasından (“(“) sonra ilk baktığı; 7 numaralı normal parantezin (“)”) kapanmasıdır. PHP, bu iki karakter (normal parantez açılışı ve normal parantezin kapanışı) arasında kalan parametreleri virgül karakterine göre parçalayarak fonksiyona parametre olrak dâhil edecektir.

Parametreler tanımlandıktan sonra PHP’nin ilk olarak bakacağı, güzel parantez açılışı ( 8 nolu “{“ karakteri ) ve güzel parantezin kapanışı ( 18 nolu “}” karakteri) dır.

PHP, güzel parantezler arasında kalan işlem alanında komutları noktalı virgül karakterine (14 ve 17 nolu karakterler) göre parçalar. Satırların alt alta veya yan yan olmasının herhangi bir önemi yoktur.

İlk olarak tespit edilen 14 nolu noktalı virgül ile bir komut öbeği tespit eden PHP, 9 nolu $toplam değişkeni ile yorumlamaya başlar. Bu noktada herhangi bir işlem yapmaz; sadece operatör bekler.

10 numaralı operatör olan eşittir (=) karakteri, $toplam değişkenin değerini operatörün sağ tarafının belirleyeceğini anlatır. Daha sonra eşittir operatörünün sağ tarafı bırakılarak; sol tarafında bulunan 11 nolu $sayi1 değişkeni okunur. Bu durumda PHP yine bir operatör bekler ve 12 numaralı toplam (+) operatörünü okur. Artık $sayi1 değişkeninin, toplam operatörünün sağ tarafında bulunan $sayi2 ile toplanacağını anlar. Bir sonraki operatör ise 14 numaralı noktalı virgül (;) olduğu için komut öbeğini bitireceğini tespit edecek ve $sayi1 ile $sayi2’nin toplamının sonucunu $toplam değişkenine aktaracaktır.

Bir sonraki adımda ise PHP, 15 numaralı “return” komutu ile başlayan satırı ele alacaktır. Burada “return” ve hem sonra gelen noktalı virgül (17 numaralı karakter) arsında yazan değer-değişkeni geri göndermesi gerektiğini anlayacaktır.

PHP’nin fonksiyonu yorumlamasını özetleyecek olursak; ilk olarak “function” kelimesi ile başlayan yorumlama, güzel parantezin kapanmasına kadar devam edecektir. Bu arada ise ilk olarak fonksiyonun adını, parametrelerini ve işlem gövdesini arayacaktır. Bu durumun işleyiş şeması ise aşağıdaki gibi gösterilebilir.

Fonksiyon tanımlaması

Fonksiyon adı

Parametreler( … )

Parametreler belirtilmiş mi?

Parametrelerin parçalanması (,)

İşlemlerin parçalanması (;)

Evet

Evet

1

2

3 - 7

Adım İlerle

İşlem gövdesi{ … }

Yorumlama işleminin tamamlanması

İşlem belirtilmiş mi?

Hayır

Hayır

Adım İlerle

8 - 18

18

Şekil 6.5: Fonksiyonun yorumlanmasında iş akışı şeması

Tetikleme

PHP içerisinde geliştirilen fonksiyonlar istenmediği sürece beklemede kalırlar. İhtiyaç duyulduğunda tetiklenmeleri ise adlarını kullanarak yapılır. Tetikleme işlemlerinde ayrıca fonksiyon için tanımlanan parametrelerin değerleri de belirtilir.

Bu durum ünitede kullanılan genel örnekle bağdaştırılabilir. Tahtada matematik sorusunu çözerken fonksiyon olarak seçilen öğrencinin adını söyledikten sonra değerleri söyleyerek sonuç istenebilir. Örneğin; “topla” adındaki fonksiyonu temsil eden öğrencinin adını dile getirdikten sonra iki sayı söylenebilir. Topla, 3, 2 gibi…

Şimdi fonksiyon tetiklemeyi PHP kodlarında incelemek için aşağıdaki örneği göz önüne alabiliriz.

Şekil 6.6: Fonksiyonun tetiklenmesi

Örneğimizde 9. satırda komutu ile fonksiyon tetiklenerek çalışmasına olanak sağlanmıştır. Ancak; bu betiğin tarayıcıda çalıştırılması halinde ekranda “5” değeri (3+2) yazmayacaktır. Çünkü fonksiyon cevabı geri göndermesine karşın; herhangi bir kullanıma gidilmemiştir. Bir başka değişle; toplama işlemi gerçekleştirilmiş ama sonuç ekrana yazdırılmamıştır.

Fonksiyon sonuçlarının ekrana yazdırılması için “echo” komutu kullanılabilir. Bu durumda fonksiyon ve ekran çıktısı aşağıdaki gibi olacaktır.

Şekil 6.7: Fonksiyonun ekran çıktısı

Çalışma Süreci

Fonksiyonlar tetiklendiği anda parametre olarak tanımlanan değerleri de gönderir. Bu değerler fonksiyon içerisine alınarak ilgili konumlara yerleştirilerek yorumlanır. Bu durumun ilk aşamaları aşağıdaki gibi gösterilebilir. Şekil 6.8 – 6.11 ile yapılan gösterimler sadece işlem akışını anlanız içindir. Fonksiyonun bu şekilde kullanımı hata ile sonuçlanacaktır.

Şekil 6.8: Fonksiyonun tetiklenmesi ile parametrelerin değerlenmesi

Şekil 6.9: Parametrelerin içeri alınması ile değişkenlerin değerlenmesi

Şekil 6.10: Değişkenlerin toplanarak başka bir değişkene aktarılması

Şekil 6.11: İşlem sonucunun “return” komutu ile geri gönderilmesi

PHP fonksiyonlarının çalışması iki adımda meydana gelmektedir. Birinci adımda sunucu, PHP uygulamasının tamamını okuyarak gerekli tanımlamaları yapar ancak çalıştırmaz. Bu nedenle fonksiyonun tetiklenmesinin fonksiyondan önce de olması bir sorun teşkil etmeyecektir.

İkinci adımda ise PHP uygulamasındaki noktalı virgüllerle ayrılmış her bir komut kümesi çalıştırılmaya başlanır. Burada dikkat edilmelidir ki; PHP, komut kümelerini satırlara göre değil; noktalı virgüllere göre ayırmaktadır.

PHP fonksiyonlarının çalışma süreçleri ayrıca matematikteki işlem önceliğine de dikkat etmektedir. Örneğin; eşittir (=) operatörünün sağ tarafında toplama ve çarpma işlemleri kullanılmışsa; öncelikli olarak çarpma işlemi gerçekleştirilecektir. Bu öncelikler konusunda herhangi bir sıkıntı yaşamamak için işlemleri normal parantezler içerisinde yazılma yoluna gidebilirsiniz.

FONKSİYONLARIN ADLANDIRILMASI

Üretilen fonksiyonların adlandırılmasında uygulanması gereken kural sadece Latin alfabesi ve alt tire işaretinin kullanılabilecek olmasıdır. Ayrıca; adın ilk karakteri olmamak kaydıyla; sayılar da fonksiyon adlarında kullanılabilir.

Fonksiyonlara ad verme işlemi her ne kadar önemli gözükmese de; iyi ve doğru bir adlandırma sistemi kullanmanız büyük veya küçük ölçekteki projelerde kodlara olan hâkimiyetinizi artırmanız yanı sıra, uygulama geliştirmenizi zevki bir hale büründürecektir.

Günümüze kadar birçok adlandırma sistemi önerilmiş olsa da yaygın olarak kullanılan üç sistem bulunmaktadır. Bu sistemler, “Pascal case”, “Camel case” ve “Uppercase”’dir.

Pascal Case

Tanımlayıcının ilk harfi ve devam eden kelimelerin her birinin ilk harfi büyük olarak yazılmaktadır. Üç veya daha fazla karaktere sahip olan tanımlayıcılar için “Pascal case” yapısını kullanabilirsiniz. Örneğin; iki sayının toplamını getiren fonksiyonun adını belirlerken “GetirToplam” yazabilirsiniz.

Camel Case

PHP dilinde en yaygın kullanılan bu stilde; tanımlayıcının ilk harfi küçük, bağlanan kelimelerin ise ilk harfleri büyüktür. Bir önceki örneğimizin bu stildeki yazımı ise, “getirToplam” olacaktır.

Fonksiyonlarda kullanılan parametreler ve değişkenler de genellikle “Camel case” stili kullanılarak biçimlendirilir.

Uppercase

Tanımlayıcıda bulunan bütün harfler büyüktür. Bu stillendirme yapısını sadece iki veya üç harf içeren tanımlayıcılarda kullanmanız önerilir. Ayrıca; “Camel case” ile stillendirilen tanımlayıcıların iki veya üç karakterden oluşan kısımlarında “Uppercase” kullanılabilir. Örneğin; veritabanı kelimesini kısaltarak “VT” şeklinde kullanacaksanız, “baglanVT” şeklinde bir fonksiyon adı üretebilirsiniz.

Eylem Adının Yerleşimi

Fonksiyonlar genellikle birer eyleme sahip yapılardır. Örneğin; veritabanına bağlanmak, dosya silmek, kişi adını getirmek gibi eylemleri gerçekleştirirler. Elbette fonksiyonların adlarında da bu eylemleri belirten eklerin bulunması, o fonksiyonun ilk bakışta anlaşılmasına büyük katkıda bulunacaktır.

Eylem adları fonksiyon adlarının önüne veya sonuna getirilebilir. Bu tamamen geliştiricinin alışkanlıklarına bağlıdır. Ancak; önek olarak kullanılması uygulamanın geliştirilmesinde daha hızlı sonuca varılmasına katkı sağlayabilir. Her iki durum için de örnek verecek olursak; veritabanında bulunan bir kişi kaydının soyadını getiren fonksiyon adı olarak “getirKisiSoyad” veya “kisiSoyadGetir” ikilisinden birisi kullanılabilir.

Uygulama geliştirmede kullanılabilecek stil örneklerini göstermek için aşağıdaki gibi bir tabloyu inceleyebilirsiniz.

Örnek

Tanımlayıcı

Eylem

Nesne

Biçimlendirme

getirProfilAd

Fonksiyon

Getir

Kişi adı

Camel

GetirProfilAd

Fonksiyon

Getir

Kişi adı

Pascal

getirProfilID

Fonksiyon

Getir

Kişi ID değeri

Camel + Uppercase

profilAdGetir

Fonksiyon

Getir

Kişi adı

Camel

profilAd

Değişken

Kişi adı

Camel

ProfilAd

Değişken

Kişi adı

Pascal

profilID

Değişken

Kişi ID değeri

Camel + Uppercase

ekleKisiResim

Fonksiyon

Kayıt

Kişi resmi

Camel

silKisiTelefon

Fonksiyon

Sil

Kişi telefon no

Camel

guncelleKisiAd

Fonksiyon

Güncelle

Kişi adı

Camel

Tablo 6.1: Adlandırma stilleri

Fonksiyonların adlandırılmasının bir şablona göre yapılması ile uygulama geliştirmesinin daha hızlı olabilmesinin temel nedeni ise geliştirme yapılan editörlerin otomatik tamamlama özelliklerinden kaynaklanmaktadır. Yayın olarak kullanılan editörlerin büyük çoğunluğu otomatik tamamlama özelliğine sahiptir. Otomatik tamamlama özelliği genellikle kodlama esnasında kendisi devreye girerek önermelerde bulunur. Ancak; kullanıcı istediği zamanlarda da herhangi bir karakterden sonra da “Ctrl+Boşluk” tuş kombinasyonunu kullanarak da bu özelliğin önermeleri görebilir.

Geliştirme yaptığımız Notepad++ editöründe otomatik önermeleri görebilmek için aşağıdaki görseli inceleyebilirsiniz.

Şekil 6.12: Notepad++ uygulamasının otomatik tamamlama özelliği

METİN İŞLEMLERİ

Çevrimiçi uygulama geliştirme işlemlerinde kullanıcılardan alınan verilerin miktarı normal uygulamalardan daha fazla olabilmektedir. Bu durumun en önemli kaynağı ise kullanıcıların sayısının fazlalığıdır. Kullanıcıların farklı sektörlerden olması ve girilebilecek verilerin standart bir biçime sahip olmamasından dolayı genellikle geliştirici veriyi işlemek zorunda kalmaktadır. Örneğin; e-posta adresi bilgisinin kullanıcıdan alan geliştirici; bu veri içerisinde “@” işaretini arayacak ve şekilsel doğruluğunu kontrol edecektir.

Metin işlemlerinde, sahip olunan verinin parçalanması, kıyaslanması veya kırpılması gibi genel konular işlenecektir. PHP dilinde kullanılabilecek metin işlemi fonksiyonlarının listesi http://tr1.php.net/manual/tr/ref.strings.php adresinden elde edilebilir.

Aşağıdaki tabloda, yaygın olarak kullanılan PHP metin işleme fonksiyonları ve açıklamaları verilmiştir.

Fonksiyon

Açıklama

substr

Bir metnin istenen kısmını kırparak verir1

1mb_substr

“substr” fonksiyonunun UTF8 destekli sürümü

explode

Verilen karaktere göre parçalayarak metni dizi haline dönüştürür

str_replace

Metin içindeki verilen karakteri bir başka karakterle değiştirir

strpos

İstenen karakterin bulunduğu sıra numarasını verir2

2mb_strpos

“strpos” fonksiyonunun UTF8 destekli sürümü

strlen

Metnin kaç karakter olduğunu (uzunluğunu) verir3

3mb_strlen

“strlen” fonksiyonunun UTF8 destekli sürümü

strrchr

İstenen karakterin son eşleşmesini tespit eder4

4mb_strrchr

“strrchr” fonksiyonunun UTF8 destekli sürümü

strrev

Metni ters çevirir

strtolower

Metnin bütün karakterlerini küçültür

strtoupper

Metnin bütün karakterlerini büyültür

Tablo 7.1: Yaygın olarak kullanılan PHP metin işleme fonksiyonları

PHP dilinde metin işlemleri yapmak için gerekli olan birçok fonksiyon verilmiş olmasına karşın; birçok fonksiyon Türkçe UTF8 desteğini bünyesinde barındırmamaktadır. Bu nedenle UTF8 destekli metin işlemleri fonksiyonları sonradan PHP diline dâhil edilmiştir. Bu fonksiyonların listesini http://tr2.php.net/manual/tr/book.mbstring.php