PHP kategorisine ait yazılarım.

Adapter (Adaptör) Design Pattern

Adapter design pattern, birbiriyle ilişkili olmayan interface'lerin birlikte çalışmasına olanak sağlar. Genellikle mevcut(eski) sınıfların yapısını bozmadan diğer sınıflarla uyum içinde çalışması için uygulanır.

Çin'den yerli üretim bir telefon sipariş verdiniz ama şarj cihazı sizin evdeki prize uygun değil. Pakete dikkatli baktığınızda bir de içinden prizinize uygun adaptör çıktığını göreceksiniz. İşte bu adaptör bizim adapter pattern'in somut örneğidir.

Daha iyi kavramak için bir örnek yapalım.



Singleton (Tek Nesne) Design Pattern

Uygulama geliştirirken en popüler tasarım desenlerinden biri singleton yani tek nesne tasarım desenidir.

İsminden de anlaşılacağı üzere singleton tasarım deseni,  hazırlayacağımız sınıftan sadece bir örneğinin oluşturulmasını sağlar. Bu sayede nesnenin kopyalanmasını yada yeni bir tane oluşturmasını engeller ve nesneye ihtiyaç duyulduğunda o nesnenin daha önceden oluşturulan örneği çağırır.

Ne zaman kullanırız?

Veritabanı bağlantılarında, port bağlantılarında, yada dosya işlemleri gibi tek bir nesneye ihtiyaç duyduğumuz zamanlarda kullanırız.



Design Patterns (Tasarım Desenleri) Nedir?

Tasarım desenleri, sıkça karşılaşılan ve birbirine benzeyen sorunları çözmek için geliştirilmiş esnek kalıplardır. 
Nesne yönelimli programlamada, programlama dili gözetmeksizin; sınıf ve nesneler arasındaki ilişkilerin en iyi şekilde nasıl olmaları gerektiğini açıklayan yöntemlerdir. Kısaca aklın yolu bir diyerek uyguladığımız hazır çözümlerdir.



PHP - Rota Sistemi

Patron, uzmanı olmadığı alana müdahale ederse kendi işini zorlaştırır. Bu yüzden patron kararları müdürüne bırakıp, şirketinin gidişatını izleye durur. Rota sisteminde de durum aynıdır. PHP, Apache Server'dan tam yetki alıp tüm yönlendirme kontrollerini kendi içinde yaparak kodlarda düzen ve kolaylık sağlar.

MVC tabanlı bir framework ile çalıştıysanız, router dosyasını bilmemeniz imkansızdır. Daha önce framework kullanmamış arkadaşlara kısaca tanıtımını yapayım. Rota Sistemi: link yapısını belirlediğimiz dosyadır. .htaccess dosyasının gelişmiş versiyonu olarak düşünebilirsiniz.

Konu neydi?

Konuyu çok dallandırıp budaklandırdığımın farkındayım. Bu yazımda sizlere basit bir Route sınıfını anlatacağım. İşleme başlamadan mal sahibi Apache Server'dan tam yetki almamız gerekiyor.

Kök dizininizde .htaccess dosyası oluşturun varsa düzenleyin.

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Tüm istekleri index.php dosyasına yönlendir.
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Artık tüm linkler index.php dosyasına gidiyor. Tüm güç php'de olduğuna göre kontrolü de ele almaya başlayalım. 



Abstract(Soyut) Sınıflar ve Interface(Arayüzler)

Soyut sınıflar, kendisinden türetilecek olan sınıflara arayüz sağlar. Türeteceğiniz yeni sınıfları bir kalıba(arayüz) zorlar ve kalıtımla kod tekrarını azaltır. Soyut sınıfllar, tek başlarına bir anlam ifade etmezler. Bu yüzden soyut sınıflardan nesne üretilemez.

abstract  anahtar kelimesini metot veya sınıfların başlarına yazarak tanımlayabilirsiniz. Eğer bir absract metot tanımladıysanız kesinlikle o metotun sınıfını da abstract olarak tanımlamalısınız. Aksi takdirde hata verecektir.

Soyut metotlara  kendi sınıfı içinde gövde yazılamaz ve türetildiği sınıfta bu metotlar ezilmek(override) zorundadır yani yeniden tanımlanmalıdır.

Teknik bilgieri geçtiğimize göre örneğimize geçelim.