Y-mvc

Y-mvc Php ile hazırlanmış bir MVC Framework'dür. Yapısal olarak diğer MVC'lerden farkları olsa da temelde bir çok özelliği aynıdır. Y-mvc size hızlı, kolay, basit bir çok özellikler sunar. Bu basit özellikleri geliştirmenize ve kullanabilmenize olanak tanır.

Framework'ü burada indirebilirsiniz:
DOWNLOAD

Özellikleri

  1. SEO dostu :

    • URL yapısı sebebiyle kulanıcıya http://siteadresi.com/urunler.php?urun=ayakkabi gibi bir URL sunmaz. Bunun yerine http://siteadresi.com/urunler/urun/ayakkabi şeklinde bir yapi sunar.

  2. Yazılabilirlik ve Okunabilirlik :

    • Bir sistem yazmaya başladığınızda kodların içerisinde boğulmazsınız. Yani her şeyin yeri belirlidir. Zaten MVC'nin temel amacı budur. Bir sistem yazarken ilk önce Controller oluşturmanız ve o Controller'a ait Method'lar oluşturmalısınız. Methodlar'ın içerisine ise Loader'ı Kullanarak gerekli verileri elde ederek yine Loader yardımıyla ilgili View'a yollarsınız. Böylece kod yazarken katmanları birbirinden ayrımış olursunuz ve sizin için yazılması daha kolay bir yapı elde etmiş olursunuz. Methodlara ise gerekirse Parameter da alabilirsiniz.
    • Yine bir sistemi okurken çok zorlanmazsınız çünkü Controller'dan başlarayarak kodları okur ve hangi verinin nereden geldiğini ve nereye gittiğini kolayca anlayabilirsiniz.  Böylece sistemi birden çok kişi yazmış olsa bile MVC bilgisine sahip başka bir programcı kodları okumakta çok zorlanmayacaktır.

  3. Kullanımı kolay

    • Kullanıcı sisteminize http://siteadresi.com/Controller/Method/Parameter şeklinde bir yapıyla ulaşır. Böylece sistemdeki BOOTSTRAP gelen URL i inceler ve var ise ilk önce Controller'ı daha sonra ulaşılan Controller sınıfının Method'unu yükler. Ayrıca kullanıcı Parameter göndermiş ise çağırılan Method'a Parameter gönderilir.
    • Örnek : http://siteadresi.com/index/contact : Kullanıcı böylece "index" isimli controller sınıfından "contact" isimli method'u çağırmış olur.
       
  4. Esnek

    • Sisteminizin gereksinimine göre farklı Controller'lar farklı Method'lar ve Farklı View'lar oluşturabilir ve bunları kendi içlerinde kolayca ilişkilendirebilirsiniz.
    • CONFIGURE.php dosyası ile global değişkenleri yeniden düzenleyebilir ve yeni global değişkenler oluşturabilirsiniz. Burada oluşturulan global değişkenlere sistemin tümünde ulaşabilirsiniz. Örnek bir global değişken olarak : "URL_BASE". Bu değişken sistemin kök URL'sini belirtir.
  5. Hızlı

    • Sistem her hangi başka bir veri kaynağına bağımlı değildir.

    • İçerisinde işinize lazım olmayacak yapılar bulundurmaz. Sadece temel MVC yapısıyla oluşturulmuştur.
    • Karmaşık veri yapıları kullanmaz.
       
  6. Güvenilir

    • BOOTSTRAP tüm bu işlemleri yapmadan önce URL'in güvenliğini sağlar. Eğer Controller veya Method bulamaz ise "pagenotfound" controller'ı çağırılır ve kullanıcıya erişmek istediği URL'in bulunmadığını söyler. Böylece kötü niyetli kullanıcılar sisteme SQL injection gibi yöntemleri kullanarak sızamazlar. 
    • Database sınıfı gelen sorguları icra ederken verilerin doğruluklarını kontrol eder.
       
  7. Çoklu dil desteği

    • Sistemde kolayca dil dosyları oluşturabilirsiniz. Kullanıcı sisteme ulaştığı zaman sistem kullanıcının Bir dil seçip seçmediğine bakar. Bir dil seçimi yok ise sistem tarayıcı dilini kullanmaya çalışır. Eğer tarayıcı diline de ulaşamıyorsa varsayılan olarak sizin belirteceğiniz bir varsayılan dil dosyasını kullanır.
    • Dil dosyaları içerisinde aynı isimde bir dizi ve her dizide aynı anahtar isimlerinden oluşan değişkenler vardır. Ancak değişkenlerin değerleri farklıdır. Böylece Bir View dosyasında farklı dillere göre "Hoş Geldiniz!" yazısı görüntülemek isterseniz her dil dosyasına bu değişkeni tanımlayıp ilgili View dosyasından 
      <?= $LANGUAGE['welcome']; ?>

      koduyla çağırabilirisiniz.

Dosya yapısı

  • /
    • CONFIGURE.php
    • BOOTSTRAP.php
    • index.php
    • .htaccess
    • /app
      • /views
        • /yourView1
          • /layouts
            • header_view.php
            • footer_view.php
          • /images
          • /css
          • /js
          • index_view.php
      • /systems
        • yourSystem_system.php
      • /plugins
        • yourPlugin1_plugin.php
      • /models
        • yourModel1_moel.php
      • /controllers
        • yourController1_controller.php
      • /system
        • /core
          • Controller.php
          • Model.php
          • Loader.php
          • Database.php
        • /langs
          • en_lang.php
          • tr_lang.php
        • /uploads
          • /images
          • /others

Kullanım

URL yapısının http://siteadresi.com/Controller adı/Method adı/Parameter şeklinde olduğunu göz önünde bulundurmalıyız.

  1. Öncelikle /app/controllers klasörü içerisine bir Controller oluşturuyoruz. Örn: index_controller.php
  2. Oluşturduğumuz Controller bir sınıf olmalıdır ve bu sınıf Controller ile aynı isimde olmalıdır. Aynı zamanda Controller sınıfını miras (extends) almış olmamız gerekiyor.
    • <?php
      
      class index extends Controller{
          .
          .
          .
      }
      
      ?>

       

  3. Controller içerisinde ise istediiğimiz isimde bir Method oluşturmalıyız. Bu method 1 adet parametre alabilir.
    • <?php
      
      class index extends Controller{
          public function product() {
              .
              .
              .
          }
      }
      
      ?>

       

  4. Bu Method'un içerisinde ise Loader'ı kullanarak Model'lar, çağırırız ve bu Model'lar sayesinde Veritabanı vb. veri kaynaklarından verilerimizi elde ederiz. Gerekirse Plugin'leri kullanarak verilerimizi işleriz Daha sonra bu verileri Loader ile View'a yollarız.
  5. <?php
    
    class index extends Controller{
        public function product() {
            $Language = $this->Language->getLang();
            $Laoder = $this->Loader;
            $Model = $Loader->Model("main_model");
            $data["uyeler"] = $Model->select("uyeler", "*", "uye_id > 20", "uye_id DESC", "LIMIT 0,10");
            
            //$Plugin = $Loader->Plugin("plugin_adi");
            $uyeSirala = $Loader->Plugin("sortData", "uye_name"); //gelenuye verilerini isimlerine göre sıralayan bir Plugin düşünelim.
    
            $data["uyeler"] = $uyeSirala->sortByName($data["uyeler"]);
            
            $Loader->View("index", $data, $Language); //View'a hem verileri hem de dili gönderir
            //veya
            //$Loader->View("index", $data); //View'a sadece verileri yollar.
            //veya
            //$Loader->View("index"); //View'a her hangi bir şey göndermez.
        }
    }
    
    ?>