Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Slim Micro Framework, Framework kullanmayan kalmasın

Konu, 'Framework / MVC' kısmında oguzweb tarafından paylaşıldı.

  1. oguzweb

    oguzweb Aktif Üye

    Kayıt:
    12 Kasım 2008
    Mesajlar:
    263
    Beğenilen Mesajlar:
    2
    [​IMG]
    Slim Framework belkide PHP Micro Framework kategorisinde en iyilerinden demiş olsam abartıyor olmam, çünkü kullanımı gerçekten çok kolay, controller/model gibi özellikleri ayrı ayrı sınıflandırarak sunmak yerine çalışma sistemini oldukça hafifletmişler.


    Controller yok demişken route temeli üzerine çalışma prensibi vardır, az sonra örneklere geçeceğiz ancak Slim Frameworkun çalışabilmesi için sistem gereksinimlerini hatırlayalım ;

    1. PHP >= 5.3.0
    2. mcrypt (opsiyonel, ihtiyaç dahilinde aktif olması gereklidir.)


    Kurulum Kullanım
    Slim Framework güncel sürümü edinmek için ilgili adrese uğruyor ve dosyaları indiriyoruz
    İndirdiğiniz dosyalar içerisinde .htaccess ve Slim klasörü hariç olmak üzere geri kalan dosya ve klasörleri kaldırabilirsiniz.,

    Kullanım kolay dedik ancak ne kadar kolay ?

    Local sunucuda ve Slim isminde bir klasör içinde çalıştığınızı varsayarak , dosyalarınızın bulunduğu dizine bir index.php dosyası oluşturmanız gerekli.

    index.php içeriği


    Kod:
    <?php
    require 'Slim/Slim.php';
    \Slim\Slim::registerAutoloader();
    $app = new \Slim\Slim();
    
    
    // code here..
    
    
    $app->run();
    ?>
    
    Sadece temel çekirdek kodlarımız bunlar, oldukça basit!
    Route demiştik, bakalım nasıl bir kolaylık sunuyor ?


    Kod:
    $app->get('/', function () {
        echo "Default Route";
    });
    
    Hiçbir işlem yapmadan bu kodları çalıştırdığınızda ekrana Default Route mesajının geldiğini göreceksiniz.
    Route örnekleri devam edelim

    localhost/Slim/hello

    Kod:
    get('/hello', function () {
        echo "Hello Route";
    });
    
    Parametre göndermek
    localhost/Slim/hello/world


    Kod:
    get('/hello/:name', function ($name) {
        echo "Hello {$name}";
    });
    
    Route kısmını anladığınızı varsayıyorum ve view yani görünüm kısmına geçiyorum
    view kısmı include mantığı ile hemen hemen aynı çalışıyor ve değer gönderebiliyorsunuz.
    template isminde bir klasör foo.php adında bir dosya oluşturun.
    foo.php içeriği

    Kod:
    <?php echo $id;?>
    
    Route fonksiyonumuz

    Kod:
    $app->get('/view/:id', function ($id) use ($app) {
        $app->render('foo.php', array('id' => $id));
    });
    
    localhost/Slim/view/1453
    ekran çıktısı 1453

    name.php adındaki dosyamıza bir değişken gönderelim.

    Kod:
    $app->get('/name', function () use ($app) {
        $app->render('name.php', array('name' => 'Oğuz KOÇ'));
    });
    
    Aynı mantık ile belirli sınıflardan veya fonksiyonlardan çalışmalarınızı yapabilirsiniz.
    Kod:
    $app->get('/test', 'test');
    function test(){
        $data = array(
            'title' => 'Test Page',
            );
        $app->render('about.php', $data);
    }
    
    Evet genel çalışma prensibi bu şekildedir, PHP merakınız var ise yeni teknolojiler denemeyi seviyorsanız mutlaka denemenizi öneriyorum.
    Özellikleri sadece bunlar ile kısıtlı değil, resmi sitesinden dokümanlar oldukça detaylı ve anlaşılır yazılmış, bol bol okuyup pratik yaparak çalışmalarınızı daha hızlı ve verimli gerçekleştirebilirsiniz.


    http://www.slimframework.com
    http://docs.slimframework.com/


    Temel özellikler kullanılarak oluşturulmuş demo için buradan
    Çalışma dosyalarını indirmek için buradan


    Çalışmalarınızda başarılar.
    Oğuz KOÇ

    http://www.oguzkoc.com.tr/slim-micro-framework/
     
  2. Onur Aydemir

    Onur Aydemir Daimi Üye

    Kayıt:
    15 Mayıs 2008
    Mesajlar:
    781
    Beğenilen Mesajlar:
    0
    Meslek:
    Developer
    Şehir:
    Bursa
    Cok guzel ve hafif bir fw. Zamaninda rest api icin kullanmistim. Kullananlar kutuphane destegi saglarsa daha ileri gidebilir...

    Ornekleme aciklayici eline saglik...
     
  3. sineld

    sineld Daimi Üye

    Kayıt:
    30 Eylül 2005
    Mesajlar:
    2,075
    Beğenilen Mesajlar:
    0
    Meslek:
    Coder, Bilgi İşlemci, Satınalma
    Şehir:
    Bursa, Türkiye
    composer kullanmanın avantajını görüyorsun slim'de. bir ara micro bir API yazdığımda kullandım. Sevdim kendisini.
     
  4. orcnd

    orcnd Yeni Üye

    Kayıt:
    8 Haziran 2008
    Mesajlar:
    4
    Beğenilen Mesajlar:
    0
    çok pratik bir framework'müş. codeigniter veya laravel'de çok küçük projeleri yapmak biraz zahmetli oluyor. bunun ile hızlıca prototip hazırlamak da mümkün.
    küçük projelerde basitçe routing için kendim bir şeyler yazmıştım bunu görseydim hiç uğraşmazdım.
     
  5. gokhanweb

    gokhanweb Aktif Üye

    Kayıt:
    12 Ocak 2005
    Mesajlar:
    321
    Beğenilen Mesajlar:
    0
    Şehir:
    Mersin
    bazı sıkıntıları var.

    php://input'u ihtiyaç duyulduğunda değil de her post isteğinde okuyor. multipart/form-data olmayan büyük verili post isteklerinde (örneğin bir forum uygulamasında) sebepsiz yoğunluğa neden olur.

    diğer bir sıkıntı da, bir çok php ile yazılmış frameworkde olduğu gibi, istekteki girdiyi (_POST) ya da sorguyu (_GET) okurken işi php'ye bırakmak yerine kendisi yapıyor. PHP zaten query'yi decode edip _GET değişkeniyle bize sunuyorken bu veriyi tekrar parse etmek gereksiz iş yüküne neden olur. bu konu daha önce çok kez konuşuldu, framework geliştiricileri anladığım kadarıyla php'nin ne olduğunu bilmeden kod yazıyorlar.

    bir başka sorun da yanlış anlaşılmaya açık bir konudan dolayı güvenlik açığı oluşma ihtimali.
    https://github.com/codeguy/Slim/blob/master/Slim/Http/Request.php#L579
    ip bilgisi içeren http başlıklarını proxy güvenliğine bakmadan okuyor. slim ile yazılan bir script içinde kullanıcı ip'sini saklamaya kalktığınızda bu ip'yi Slim\Http\Request nesnesi aracılığıyla alıyorsanız yandınız. symfony'deki gibi trusted Proxy kayıtları yapılarak X_FORWARDER_FOR gibi başlıklar sadece proxy güveli ise dikkate alınmalı. zaten bu haliyle de doğru düzgün almıyor. HTTP_X_FORWARDED_FOR başlığı birden fazla proxy kullanımında sırasıyla önceki proxy'ler ve kullanıcı ip'sini aralarına virgül koyarak birleştirir. eğer veritabanında bir ip kaydı için 15 karakterlik bir sütun oluşturduysanız, 1 den fazla proxy ile sitenize bağlananların ip adreslerini kaydedemezsiniz. ayrıca yukarıda linkini verdiğim dosyadaki 588. satır hiç bir zaman işletilmeyecektir. bu kadar yıldır geliştirilen bir yazılımda böyle basit hataların yapılması yazılımın kalitesi hakkında da biraz olsun bilgi veriyor.

    yani özetle, ciddi işlerde kullanmayınız. Request sınıfının komple yeniden yazılması lazım.