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.



Laravel 5.1 Ajax CSRF Sorunu

Laravel 5.1 sürümünde ajax ile işlem yapmaya çalıştığınızda konsolda 500 (Internal Server Error) hatasını göreceksiniz. Bunun sebebi TokenMismatchException'dır yani bizim sayfamıza ulaşmadan önce Laravel 5 ile gelen Middleware bizden token istiyor. Göndermezsek de size cevap yok diyip kapatıyor kapıları. 

Çözüm:

Bunun çözümü gayet basit, ajax ile göndereceğimiz verilerin yanında token da göndereceksiniz. Bu işlem 2 şekilde yapılabilir.

Öncelikle formunuza _token isimli bir gizli input ekliyorsunuz ve değerine de laravel'in csrf_token() fonksiyonunu ekliyorsunuz. Yani aşağıdaki kod. Eğer laravel'in form sınıfını kullanıyorsanız bu input otomatik ekleneceği için eklemenize gerek yoktur.

 <input type="hidden" name="_token" value="{{ csrf_token() }}">

Sonra aşağıdaki jquery kodunu sayfanıza ekliyorsunuz.

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('input[name="_token"]').val()
    }
});

Bu kod; jquery ile gerçekleştirdiğiniz tüm ajax işlemlerine token gönderir. Bir diğer yöntem ise ajax işleminize _token anahtarınızı elinizle eklemek.



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.