Kişisel Bir Web Günlüğü

Requi – Requirement Controller Class

requiRequi, php ile yazılmış bir gereksinim kontrolü sınıfıdır. Yazdığınız bir php uygulamasını herhangi bir sunucuya yüklemeden önce, o sunucunun uygulamanız için gerekli olan şartları yerine getirip getirmediğini test eder. Ayrıca, sunucu üzerinde yapılan bir değişiklik sonucunda, halâ uygulamanızın sağlıklı bir şekilde çalışıp çalışmadığından emin olmanızı sağlar.

Requi nedir, niye var?

Özellikle framework’lerde (Kohana, Yii gibi) ve paket programlarda (forum, blog gibi) sıkça karşılaşıyoruz; sunucuya kurulum yapmadan önce bir gereksinim kontrolü yapılıyor. Böylece sunucunun konfügürasyonu, uygulama için uygun mu değil mi test edilmiş oluyor. Testler başarılı olursa kuruluma devam ediliyor.

Kohana gereksinim kontrolü Yii gereksinim kontrolü

Bu gereksinim kontrolünü yapan script’lere baktığımda genelde hep gelişi güzel yazıldığını gördüm. Kendim de geçmişte GoPof için gereksinim kontrolü yapan gelişi güzel bir script yazmıştım. Geçenlerde bu script’i düzenlerken, bu işi daha pratik ve az zamanda yapabilecek otomatik bir class yazma fikri doğru.

Requi ne gibi özelliklere sahip?

  • Tamamen nesne yönelimli yazılmış bir sınıftır. Kullanımı kolaydır ve son derece esnektir.
  • Tema desteği sayesinde test sonuçlarının ekranda nasıl görüntüleneceği ile uğraşmanıza gerek kalmaz.
  • Testleri yazarken size zaman kazandıracak yardımcı sınıflar sunar. Örneğin php.ini dosyasındaki bir direktifin tanımlı olup olmadığını Ini::get('direktif_ismi'); yardımcı sınıfı size kolayca söyler.

Requi nasıl kullanılıyor?

Örneğin bizim php uygulamamızın çalışabilmesi için sunucu (server) şu gereksinimleri sağlamalı:

  1. php versiyonu 5.2.0 ve yukarısı olmak zorunda
  2. shell_exec() fonksiyonu aktif olmak zorunda
  3. ve son olarak da http eklentisi olursa iyi olur

işte bu 2 zorunlu, 1 seçimli gereksinimi kontrol etmek için Requi sınıfını şöyle kullanıyoruz:

<?php
require_once 'class.Requi.php';

    Requi::getInstance()

    // GEREKLİ OLANLAR (olmazsa olmazlar)
    ->addRequired(array(
        'title' => 'PHP versiyonu',
        'cause' => 'php versiyonu 5.2.0 veya üzeri olmalıdır!',
        'state' => Php::version('5.2.0', '>'),
    ))
    ->addRequired(array(
        'title' => 'shell_exec() fonksiyonu',
        'cause' => 'shell_exec fonksiyonu gereklidir!',
        'state' => Func::exists('shell_exec'),
    ))

    // OLMASA DA OLUR dediklerimiz
    ->addOptional(array(
        'title' => 'HTTP eklentisi',
        'cause' => 'HTTP eklentisi olsa iyi olur. Mümkünse etkinleştirin!',
        'state' => Ext::loaded('http'),
    ))

    // testleri başlat
    ->start();
?>

İşte bu kadarcık kod ile php uygulamanız için şık bir gereksinim kontrolü yazdınız :)

Kohana gereksinim kontrolü

Download

Yazmış olduğum Requi sınıfını eBurhan Araçları sayfasından bilgisayarınıza indirebilirsiniz. Yine aynı sayfada bu sınıf için yazmış olduğum ayrıntılı bir dökümana ulaşabilirsiniz. Faydalı olması dileyiğle ;)

23 Temmuz 2011 Programlama Bugün 2 kez, toplamda ise 3.217 kez okundu. , , ,
7 yorum var
  1. Çok faydalı olabilecek bir sınıf yazmışsın yine Erhan. Çok teşekkürler. :)

  2. teşekkürler :)

  3. Eyvallah hacı, işimize yarar bu :)

  4. Uzun bir aradan sonra gerçekten güzel bir yazı ve güzel bir sınıf teşekkürler.

  5. Oğuz Özcan 24 Temmuz 2011 10:40

    Erhan gerçekten çok güzel bir iş daha yaptın. Bunları açık bir şekilde yayınlaman da çok özel, güzel bir davranış.

    Senin yazdığın sınıfları projelerimde kullanıyorum artık. O kadar işe yarayan projeler ki her birinin gözümde ayrı ayrı değerleri var.

    Bu emeğine hiçbir karşılık beklememen de cabası. Fakat o kadar isterdim ki senin projelerine maddi manevi destek verebilmek. Böyle bir imkan sağlamanı çok isterim.

    Ellerine ve emeğine sağlık…
    Hayatında her alanda başarılı olman dileğiyle

    Oğuz

  6. class.Requi.php dosyası içindeki getInstance() fonksiyonu statik olmalı, çünkü index.php dosyasında statik olarak çağırılıyor: Requi::getInstance()

  7. @angelside
    kesinlikle haklısın, benim gözümden kaçmış ama senden kaçmamış (: Teşekkür ederim uyardığın için, dosyayı güncelledim.

İçinizde kalmasın, siz de yorum yazın

Telif Hakkı © 2012 eburhan.com | Structure | XHTML