İnternet Tabanlı Programlama Dersi 3. Ünite Özet

Php İle Dinamik Web Kodlama

Giriş

Bir önceki ünite de PHP programlama dilinin nasıl çalıştığı, PHP programlama dili ile yazılmış kodları çalıştırmak için gerekli olan araçların neler olduğu konusunda bilgi verilmiştir. Bu ünitede ise PHP programlama dilinin yapısı konusunda bilgi verilecek ve bir PHP çerçevesi olan Laravel tanıtılacaktır. PHP programlama dili birçok özelliği ve uygulama alanı olan son derece gelişmiş bir programlama dili olduğu için tüm özelliklerini detaylı olarak bir veya iki ünitede anlatmak mümkün değildir. Bu bakımdan bu ünite de PHP dilinin temel özellikleri konusunda özet bilgiye yer verilmiştir. Bu ünitede veriler bilgiler ışığında basit etkileşimli web sayfaları yapmak mümkün olacaktır. Ancak PHP’nin daha detaylı özelliklerini kullanabilmek için php.net adresinde bulunan PHP Kılavuzu veya PHP ile ilgili kitaplardan faydalanmak uygun olacaktır.

Değişkenler ve Değişken Türleri

PHP dilinde değişkenlerin türünü özellikle belirtmeye gerek yoktur. Bir değişken tanımlanıp değer atandığı anda o değişkenin türü atanan değere göre otomatik olarak belirlenmiş olur. Örneğin bir değişkene true değeri atandığında bu değişkenin türü boolean olur. Aynı değişkene daha sonra bir tam sayı atanabilir. Bu durumda değişkenin türü de değişmiş olacaktır. PHP, değişkenler konusunda oldukça esnek bir yapıya sahiptir. Genel olarak PHP’de 4 temel türden bahsedilebilir: boolean , integer , float ve string . Boolean türündeki değişkenler sadece iki değer alabilmektedirler: true ve false . Bu tür değişkenler genellikle şartlı ifadelerde kullanılmaktadır. Integer ve float türleri ise tamsayı ve ondalıklı sayı değerleri ifade etmektedir. String türü değişkenler ise içlerinde metinsel ifadeleri barındırırlar.

HTML Formları

HTML sayfalarında kullanıcının veri girişi yapabilmesi için HTML formları kullanılmaktadır. Bu formlara girilen değerler kullanıcı formu gönderdiği anda PHP tarafından işlenebilmektedir. Formlarda PHP için en önemli bölüm Form etiketi altındaki action ve method özellikleridir. Action özelliği ile forma girilen bilgilerin hangi dosyaya gönderileceği belirlenmektedir. Burada bir PHP dosyasının tam yolu verilmelidir. Form etiketinin method özelliği ise iki değer almaktadır: post ve get . Post seçeneği seçilir ise, veriler arka planda gönderilir, get seçeneği seçilir ise forma girilen tüm veriler adres çubuğuna eklenerek gönderilir. Formlarda genellikle post değeri tercih edilmektedir.

Kontrol Yapıları

PHP dili, tüm programlama dillerinde bulunan if , for , while gibi kontrol yapılarını desteklemektedir. Bu yapıların kullanımları, PHP dili ile benzerlik gösteren diğer programlama dilleri ile oldukça benzerdir.

If:

Programlama dillerinin en önemli ifadelerinden biri olan if ile bir kod bloğunun belirlenen koşullara bağlı olarak çalıştırılıp çalıştırılmayacağı belirlenir. if(karşılaştırma ifadesi) {çalıştırılacak komutlar;} şeklinde bir kullanıma sahiptir. Parantez içinde bulunan karşılaştırma ifadesinin sonucunun doğru (true) olması durumunda küme parantezi içinde bulunan komutlar çalıştırılır. Yanlış olması durumunda ise bu küme parantezi içinde bulunan komutlar çalıştırılmaz ve programın çalışması if bloğundan sonraki komut ile devam eder. Parantez içinde sonucu doğru (true) ya da yanlış (false) olan bir karşılaştırma ifadesi yer almalıdır.

For:

for döngüsü, döngü bloğu içine yazılan kodların belirlenen koşullara bağlı olarak istenilen sayıda tekrar tekrar çalıştırılmasını sağlar.

While:

for döngüsü ile aynı şekilde çalışır. Karşılaştırma ifadesinin sonucu doğru olduğu sürece döngü içindeki komutlar çalıştırılır ve her döngü adımında karşılaştırma ifadesi kontrol edilir. Karşılaştırma ifadesi yanlış sonucunu ürettiği anda döngüden çıkılır.

PHP’de var olan diğer kontrol yapıları ise Do while,Foreach, Break, Continue, Switch, Goto, include/include_once, require/require_once olarak sıralanabilir.

Fonksiyonlar

Diğer programlama dillerinde olduğu gibi PHP ile de fonksiyon tanımlamak mümkündür. Fonksiyonlar daha sonra çalıştırmak için programcı tarafından yazılan kod bloklarıdır. Fonksiyonlar genellikle sıkça yapılan işlemler için tanımlanır. Böylece benzer kodlar tekrar tekrar yazılmamış olur. Aynı zamanda kodların organizasyonunu sağlamak içinde fonksiyon tanımlaması yapılabilir. Böylece kodlar daha okunaklı ve anlaşılır olacaktır. Yazılan bir fonksiyonun çalışması için mutlaka çağrılması gerekir. Fonksiyon tanımı function kelimesi ile yapılmaktadır. Daha sonra fonksiyona bir isim verilmelidir. Fonksiyon isimlendirme kuralları, değişken isimlendirme kuralları ile aynıdır. Fonksiyon isminden sonra parantez içinde virgül ile ayrılmış parametre listesi verilmelidir. Parametreler fonksiyona değer göndermek için kullanılmaktadır. Parametre sayısı, fonksiyonun amacına bağlı olarak değişkenlik gösterebilir. Fonksiyon bloğu içinde fonksiyonun yapması istenen komutlar yer almalıdır. Son olarak ise isteğe bağlı olarak fonksiyon geriye bir değer döndürebilir. Geriye değer döndürmek için ise return komutu kullanılmalıdır. return komutunun kullanıldığı yerde fonksiyon sonlandırılır ve fonksiyondan çıkılır. Bu bakımdan return komutu döngüleri sonlandırmak için kullanılan break komutu gibi de kullanılabilmektedir.

Kapsam

PHP dilinde değişkenler sadece tanımlandıkları blok içinde ve o bloğun alt bloklarında geçerlidir. Bir blok içinde tanımlanmış değişkene yerel değişken, bir blok içinde tanımlanmayan değişkene ise global değişken adı verilir. Global değişkenler tanımlandıktan sonra tüm php dosyasında geçerlidirler. Ancak yerel değişkenler tanımlandıkları blok bittiğinde ölürler ve bir daha kullanılamazlar.

Parametre Gönderimi

Varsayılan olarak bir fonksiyona parametre gönderildiğinde sadece değer olarak gönderilir. Fonksiyon içinde parametre olarak verilen değişkene ulaşılmaz.

Varsayılan Parametre Değerleri

Fonksiyonlara varsayılan parametre tanımlaması yapılabilir. Böylece fonksiyon çağrılırken varsayılan parametre tanımlaması yapılan değerler parametre olarak gönderilmeyebilir. Parametre gönderilmediğinde fonksiyon içinde varsayılan değer kullanılır. Varsayılan parametre tanımlaması yapılırken mutlaka parametre listenin en sonundan itibaren yapılmalıdır. Örneğin iki parametre alan bir fonksiyonun ilk parametresine varsayılan değer tanımlayıp, ikinci parametresine varsayılan değer tanımlamamak hataya sebep olacaktır. Bu durumda ya her iki parametreye de varsayılan değer tanımlanabilir ya da sadece ikinci parametreye varsayılan değer tanımlaması yapılabilir.

Sınırsız Sayıda Parametre

PHP ile sınırsız sayıda parametre alan fonksiyonlar tanımlanabilir. Sınırsız sayıda parametre alan fonksiyonlarda parametre olarak gönderilen değerler fonksiyona dizi olarak aktarılmaktadır. Sınırsız parametre değişkeninin başına üç nokta yan yana konulmalı ve mutlaka fonksiyon tanımında son parametre olarak verilmelidir.

Sınıflar

PHP’de modern programlama dillerinde olduğu gibi sınıf tanımlaması yapılabilmektedir. PHP’nin 5 versiyonu ile sınıf tanımlama konusunda önemlide değişiklikler yapılmış ve tamamen yeni bir Nesne Modeli yazılmıştır. Programlama dillerinde sınıflar, kendi içinde tutarlılığı olan özel işleri modellemek için kullanılır. Bu işlerin yürütülmesinden tamamen tanımlanan bu sınıf sorumlu olacaktır. Böylece programlar gerçek hayatta olduğu gibi sınıflar ile modellenmiş ve daha anlaşılır olur. Sınıf tanımlaması ile kodlar düzenli bir şekilde yazılır ve tekrar tekrar kullanılabilir. Örneğin veritabanı ile işleri yürütmek için bir sınıf tanımlaması yapılabilir ve veritabanı ile ilgili tüm işler bu sınıf üzerinden yürütülebilir. Benzer şekilde web sayfasında kullanıcı işlemleri ile ilgili bir sınıf tanımlaması yapılabilir ve kullanıcı, girişi, çıkışı, yeni kullanıcı tanımlama gibi birçok işlem tamamen bu sınır üzerinden gerçekleştirilebilir. Sınıflar kendi içinde sabit, değişken ve fonksiyon barındırabilirler. Bunlara sınıfın üyeleri denilmektedir. Sınıf tanımlama class kelimesi ile yapılmaktadır. Sınıfa ait her bir örneğe ise nesne adı verilmektedir. İşlemler genellikle sınıfın bir örneği olan nesneler üzerinden yapılmaktadır.

Veritabanı İşlemleri

Web sayfaları için sunucu tarafında çalışan programlama dillerinin en önemli amaçlarından biri de veritabanı ile ilgili işleri yapabilmektir. Kullanıcı girişinin olduğu bir web sitesinde kullanıcı bilgileri, bir alışveriş web sitesinde siparişler ile ilgili bilgiler, bir kütüphane web sitesinde kitaplar ve ödünç alma/verme ile ilgili bilgilerin saklanması gibi birçok iş için veritabanları kullanılmaktadır. Veritabanları genellikle veritabanı sunucu yazılımları üzerinde oluşturulmaktadır. Sunucu tarafında çalışan programlama dilleri de bu veritabanı sunucu yazılımlarına kullanıcı adı ve şifre ile bağlanmakta ve SQL dili ile veritabanı ile ilgili işler yapabilmektedirler. PHP programlama dili ile tüm popüler veritabani sunucu yazılımlarına bağlanılabilir. Piyasada Microsoft SQL Server, Oracle, IBM DB2, vb. ücretli ve MySQL, MariaDB, PostgreSQL, MongoDB, SQLite, vb. açık kaynak kodlu ve ücretsiz çok sayıda kendini kanıtlamış veritabanı sunucu yazılımı bulunmaktadır. PHP ile veritabanı sunucu yazılımlarına bağlanabilmek için o yazılımın uzantısının (extension-plugin) kurulu olması ve PHP’nin ayar dosyasından etkinleştirilmesi gerekmektedir. Özellikle PHP kullanıcılarının açık kaynak kodlu ve ücretsiz olan MySQL ve MariaDB veritabanı sunucu yazılımlarını tercih ettikleri söylenebilir.

Çatılar ve Laravel

Son yıllarda web uygulama geliştirme alanında çatı (framework) kullanımının önemi artmıştır. Web uygulama geliştirme alanında çalışan ve web uygulama geliştirme çatılarının kullanımı hakkında bilgisi olmayan yok denecek kadar azdır. Web uygulama geliştirme çatıları ile yazılım geliştirme süreci önemli derecede hızlanmaktadır. Çatılar, uygulamalar için gerekli olabilecek temel işlevleri ve araçları bünyelerinde bulundurmaktadırlar. Ayrıca çatılarda bulunan güvenlik araçları sayesinde web sitelerinin daha güvenli olmasını sağlanmakta ve dış saldırılardan etkilenme olasılığı düşmektedir.

Çatılar, birçok uygulamada bulunan benzer öğelerin kullanılmalarına yönelik ortak bir tasarım ortaya koymaktadır. Genel olarak tüm uygulamalarda ortak olarak değerlendirilebilecek temel öğeler bulunmaktadır. Çatılar, bu ortak temel öğeler için bir alt yapı ve bir tasarım deseni ortaya koymaktadırlar. Böylece uygulama geliştirici veri tabanı ve kullanıcı yönetimi gibi temel konularda daha az zaman harcayarak asıl zamanını uygulama üzerine yoğunlaştırması mümkün olabilmektedir. Ayrıca çatılar, programcıları belli kurallar içinde kod yazma zorlamaktadır. Böylece geliştirilen kodlar daha basit, anlaşılır ve hataları daha kolay ayıklanabilir olmaktadır. Eğer web uygulama geliştirme çatısı kullanmayan bir programcı biraz düzensiz çalışırsa, işin içinden çıkılamayacak karmaşık kodlar üretebilmektedir. Çatılar bu durumun üstesinden gelebilmek için bir tasarım desenini kullanmayı zorunlu hale getirmektedirler.

PHP çatılarının çoğu MVC (Model-View-Controller, Model-Görünüm-Kontrolcü) tasarım desenini kullanmayı zorunlu kılmaktadırlar. MVC tasarım deseni, kullanıcı etkileşimi gerektiren uygulamalar için geliştirilen tasarım desenlerinden en yaygın olarak kullanılanıdır (Abeysinghe, 2009). Tasarım desenlerinin ortaya çıkmasındaki sebep, daha önce birçok geliştiricinin karşılaşmış oldukların problemlere ortak bir çözüm yolu sunuyor olmasıdır. Örneğin MVC tasarım deseni, uygulamanın görünüm (sunum) katmanı, kontrolcü (business logic) katmanı ve model (veri yönetimi) katmanının nasıl birbirinden ayrılabileceği konusunda geliştiricilere yardımcı olur.

Model katmanı; veri tabanı ile ilgili işlerde kullanılan katmandır. Görünüm katmanı, kullanıcı arayüzünün geliştirilmesi için kullanır, HTML, CSS ve JavaScript gibi kodlar bu bölümde bulunur. Kontrolcü katmanı ise organizasyonun yapıldığı bölümdür. Bu katman ile geliştirici sistemdeki Modelleri ve Görünümleri yöneterek uygulamanın kullanıcıları ile olan etkileşimleri yönetir. Kontrolcü genel olarak hesaplamaların ve yönetim işlerinin yapıldığı bölümdür. Model ve Görünüm katmanlarının Kontrolcü katmanına ulaşması mümkün değildir. Görünüm katmanı Model katmanına ulaşılabilmektedir.


Güz Dönemi Dönem Sonu Sınavı
18 Ocak 2025 Cumartesi
v