Şimdi Ara

Türk yapımı CMS & PHP Framework, GNC

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir (1 Mobil) - 2 Masaüstü1 Mobil
5 sn
9
Cevap
0
Favori
3.888
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar malum uzun zaman önce konuşulan bi muhabbet hortlatmak gibi bir niyetimde yok! Ancak, bizim neden böyle bişeyimiz yok, yapımına yardım edecek var mı, la hadi yapalım, ya öff falan çok dendi. Bende 1 yılı aşkın süredir comment line ve function nameleri Türkçe olan PHP tabanlı bir CMS ve PHP Framework geliştirdim.

    Amacım Joomla, Wordpress, CI, Laravel falan olmadı, amacım gereksiz ve saçma sapan kasan Frameworkler yerine gerçekten geliştiriciyi düşünen ve hızlı şekilde ilginç projeleride yapabilecek bir alt yapı oluşturmaktı ki bir kaç büyük projeyide bu sistem ile hayata geçirmeyi başardım. Her neyse;

    Kısacık videosunu şurdan izleyebilirsiniz.
    www.youtube.com/watch?v=7iCuRiNonbI&feature=youtu.be

    İndirmek ve detaylı bilgi almak içinse
    guncebektas.com
    adresini ziyaret edebilirsiniz.


    Temel özellikler

    • Global Ayarlar
    • Drag & Drop Menü Yapısı
    • Modüler Sistem
    • SEF Link (Petty URL)
    • Güvenli Oturum Yönetimi
    • MVc yapısı (Dikkat c küçük)
    • CKeditor ve CKfinder
    • İnline edit imkanı
    • Çoklu dil desteği
    • Kullanıcı Yönetimi
    • Kullanıcı Yetkilendirme
    • İçerik Yönetimi
    • Şablon Yapısı
    • Veri Yönetimi
    • Cache
    • PDO Sınıfı
    • Mail Sınıfı
    • Upload Sınıfı
    • Login Sınıfı
    • Mesajlaşma Sınıfı
    • Nexmo SMS Sınıfı
    • Bootstrap ile uyumlu
    • JQUERY ile entegre AJAX modülleri
    • AJAX file upload ve aklıma gelmeyen bir sürü özellik



    An itibariyle yayınlamaya başladığım için download da kurulumda vs. dokümantasyonum bulunmuyor. Bu konuda destek verecek arkadaşlara, yaşadıkları sorunları paylaşanlara ayrıca teşekkür ederim. Sorunlarınızı en kısa sürede çözmeye çalışacağım.

    NOT: Yakında GIT'tende paylaşımlarımı yayınlayacağım.







  • Yillar sonra biseyler yapmaya kalkismis basarili ve ise yarar bir paylasim gordum. Mutluyum. Basarilar.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: Kaygerya

    Yillar sonra biseyler yapmaya kalkismis basarili ve ise yarar bir paylasim gordum. Mutluyum. Basarilar.

    Teşekkür ederim. Desteklerinizle büyüyecek inşallah
  • Hocam bir an önce GitHub'a koyup destek alabilirsiniz.
  • Güzel bir proje,elinize sağlık.
  • Kolay gelsin.

    İyi framework yazmanın birinci kuralı, başkaları tarafından kolay kullanılabilecek pratik kodlar yazmaktır.

    Spagetti artık geçer görmeyen bir kodlama şekli. Çok kısa zamanda, kodların yönetilemez hale gelir.

    fonksiyonlarını prefixlemen iyi bir şey ancak bu zamanda OO olmayan fw kullanılmaz. OO kullanmamızın sebebi. İlla şekil olsun diye değil. Intelli Sense özellikli ide lerde kolaylık sağlaması için. Kısaca bilmem kaçbin tane variable ezberlemek yerine editör senin için yazıyor.

    Fonksiyon içinde global kullanmak 10 sene önceki şeylerdi artık kalmadı.

    quote:


    function _gnc_sayfa_fonksiyonu($varsayilan){
    global $adres, $site;

    if (!empty($adres['fonk']));
    $adres['fonk'] = str_replace('-', '_', $adres['fonk']);
    if (!empty($adres['url1']));
    $adres['url1'] = str_replace('-', '_', $adres['url1']);


    Bu tür if blokları yakalanması çok zor hatalara yol açar.

    dizin yapısını.

    root/public/index.php
    root/app/config
    root/app/lib
    root/app/modules
    root/app/models
    root/app/templates

    vb şeklinde kurarsan her dosyanın başına check atmak zorunda kalmazssın.

    Dahası autoloader sistemine geçmen çok büyük kolaylık sağlar.

    Bunları sana çamur atmak için söylemiyorum. burada yaklaşık 5 yıl önceki fikirlerim var (svn deki kod son sürüm). Bu bile bana o kadar çok ilkel geliyorki anlatamam..

    https://code.google.com/p/kaplan5/

    Özetle. Framework ün ilk ve en önemli işi programcının işini kolaylaştırmak.
    Hız, düşük kaynak kullanmak çok daha sonra gelir.

    Kolay gelsin.




  • Öncelikle emeğine sağlık ancak düzeltmen gereken birçok şey var. Delifişek zaten gereken birçok şeyi yazmış ancak ben de birkaç şey ekleyeyim.

    Birincisi, commentler dışında Türkçe kullanmak (variable, class adları, dosya/klasör adları) sadece amatörlükten çıkamamış yazılımcıların yaptığı birşey.

    İkincisi, şuan senin klasör yapına baktığımda hiçbirşey anlamıyorum. Veri ne mesela? View katmanı mı? Eğer view katmanıysa javascriptler neden sistem içerisinde? gorunum ve tasarimi ayıran nokta ne mesela?

    Üçüncüsü, MVC demişsin ama MVC ile pek bir alakan yok. Modellerin bazıları aslında controller mantığı taşıyor, ve bazı kontrollerlar view mantığı taşıyor. Hatta bazı viewlar hiç bulaşmaması gereken PHP kodlarını barındırıyor. Mesela model ve kontroller içerisinde asla echo kullanmayacaksın, asla html göstermeyeceksin. (link bile vermeyeceksin) Controller gerekiyorsa template motoruna gerekli verileri bindleyecek, ve view dosyası bu bindlenen veriyi kullanacak.

    Dördüncüsü, spagetti kodları function içerisine wraplamak OOP değil. Projende OOP'in temel konseptleri yok. (örn. inheritence) Örneğin, fonksiyonlar global scope içerisinde yazılmış. Sınıflar global olarak çağırılıyorlar fonksiyon içine. Bu çok yanlış birşey. Zaten, bu yanlışları üzerinden atamazsan dependency Injection, unit testing, solid gibi konseptlere asla giremezsin.

    En basitinden, basit bir front controller/service locator oluştur. Örneğin:

     
    <?php namespace Bootstrap;

    use Models\Database as Database;
    use Models\View as View;
    use Models\Request as Request;

    class ServiceLocator
    {
    var $database, $view, $request;

    public function __construct()
    {
    $this->database = new Database;
    $this->view = new View;
    $this->request = new Request;

    //Requeste göre kontrolleri çalıştıracaksan burada kontrol edeceksin, front controller mantığı
    $response = new OrnekController($this);

    //Son işlemleri yap (örn viewi generate et, uygulamayı durdur)

    }
    }

    <?php namespace Controllers;

    class BaseController
    {

    protected $locator;

    public function boot(ServiceLocator $site)
    {
    $this->locator = $site;
    $this->run();
    }

    }

    <?php namespace Controllers;

    use BaseController;

    class OrnekController extends BaseController
    {

    public function __construct(ServiceLocator $site)
    {
    parent::boot($site)
    }

    public function run()
    {
    $kullanici = $this->locator->database->sorgu('SELECT username FROM USERS WHERE id = 1);

    return $this->view->render('views/anasayfa', array('kullanici' => $kullanici);
    }

    }

    views/anasayfa
    <h3>Hoşgeldin, {{ $kullanici }}</h3> //template engine kullandığını varsayıyorum


    Emeğine saygım var, ama lütfen Composer gibi, Laravel gibi PHP'in yeniliklerini biraz inceleyin. PHP bilgini zaten kanıtlamışsın, ancak yazılım mimarileri, tasarım desenleri, kodlama standartları, yazılım ilkeleri, nesle yönelimli programlamanın temelleri, test edilebilir kod, okunabilir kod, dry/solid ilkeleri, bağımlılık enjeksiyonu gibi konularda çok eksiğin var.

    Misal, composer kullanıp şöyle bir composer.json kullansan çok daha kullanışlı bir framework üretmiş olursun ve sen işin low level kısmıyla değil asıl kısmıyla ilgilenmiş olursun.

    { 
    "require": {
    "klein/klein": "dev-master",
    "pimple/pimple": "2.0.*@dev",
    "symfony/console": "2.5.*@dev",
    "doctrine/orm": "2.5.*@dev"
    "twig/twig": "1.15.*@dev",
    "respect/validation": "dev-master",
    "filp/whoops": "1.0.10",
    "monolog/monolog": "1.8.*@dev",
    "guzzle/guzzle": "3.8.*@dev",
    "nikic/php-parser": "1.0.*@dev",
    "patchwork/utf8": "dev-lab-windows-fs",
    "jeremeamia/SuperClosure": "dev-multiple-parsers"
    }
    }


    Ayrıca şuan ürettiğin yapı bir framework değil. (Frameworke benzer birşey ama ne olduğu belli değil açıkcası.) PHP tabanlı bir CMS uygulaması demek daha doğru olur çünkü framework olarak kullanılabileceği pek bir özelliği/alanı yok. Birşeyleri yapabilmek için çoğu zaman kaynak dosyaları değiştirmek gerekiyor.

    Son olarak, sınıfların ve fonksiyonların çok şişman. Genel olarak bir sınıfta 10 method, her methodda 10 satır kod, her methodun maksimum 5 bağımlılığı ve bir pakette maksimum 15 sınıf gibi bir kural var. Buna uymak şart değil ama uyulması Single Reponsibility Principle (Tek Sorumluluk Kuralı)'e sadık kalınmasını sağlıyor bir nebze.

    Açıkcası, benim sana tavsiyem bu projeyi geliştirmeyi durdurman ve Laravel, Symfony gibi bir frameworkle biraz vakit harcaman. En azından framework konseptini tam olarak oturtmaya çalış. MVC tam olarak neymiş, Composer ne işe yarıyormuş öğren. Bu saatten sonra bu tür bir uygulamayı kimse kullanmaz. CMS olarak kullanan olabilir ama framework olarak asla. Çünkü bu tür projelerden zbilyon tane var Github'da. Tutulmuyor ve tutulmayacak. Eğitim/öğrenim amaçlı geliştirilmiş projeler olarak kalıyor biryerde. Artık temel nasıl atılıyor öğrenmişsin. Buna devam etmek sana birşey kazandırmayacak. Artık binayı dikme vakti. :)

    İnsanlara (yazılımcılara) yardımcı olmak istiyorsan, bir proje geliştir ve onu yayınla. (Framework olarak değil, mesela basit bir sınıf olarak) Hiç yapamıyorsan çok popüler bir sınıfı/frameworkü Türkçe'ye çevir. İlkel yöntemlerle framework geliştirmeye çalışarak tekerleği 10 milyonuncu defa yeniden icat etmeye çalışma. Zaten projeni getirebileceğin en uç noktaya kadar getirmişsin. Bunun ilerisi eğer aynı yoldan devam edersen sana bilgi olarak birşey kazandırmaz.

    Amacım seni üzmek veya karalamak değil. (Keşke bana da code review yapıp hatalarımı söyleyecek/eleştiri yapacak insanlar olsa.) Sana tavsiyem Laravel 4 gibi bir frameworkle biraz vakit geçirmeni ve hoşuna giden özellikleri şuanki frameworküne geçirmeyi (belki Eloquent gibi bir ORM yazarsın ve SQL'den kurtulursun?) denemen. Çok daha yararlı olacağından eminim.

    Edit: Unutmadan, PSR standartları vehttp://www.phptherightway.com/ 'i incele.

    quote:

    Orijinalden alıntı: Delifisek.Tux

    Dahası autoloader sistemine geçmen çok büyük kolaylık sağlar.

    Bunları sana çamur atmak için söylemiyorum. burada yaklaşık 5 yıl önceki fikirlerim var (svn deki kod son sürüm). Bu bile bana o kadar çok ilkel geliyorki anlatamam..

    https://code.google.com/p/kaplan5



    Bir insan 6 ay önce yazdığı koda baktığında utanmıyorsa kendini yeterince hızlı geliştiremiyor demektir. :)



    < Bu mesaj bu kişi tarafından değiştirildi TSF Aristona -- 3 Nisan 2014; 3:03:52 >




  • Tebrikler guzel paylasim olmus

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • delifeş ve Aristona sizlere çok teşekkür ediyorum. Açıkçası gnc'yi bırakalı baya oldu, aklın yolu bir! Ancak, yeni başlayanlar için Türkçe oluşu vs. bazı kolaylıklar sağlayacağını düşünüyorum.

    Tabi sizlerinde belirttiği gibi oop'a geçmek gerekiyordu. Bende kırdım dizimi oturdum, 6 ay önce elimde ne varsa sildim. Herşeyi sıfırdan biraz daha kullanımı ve yazımı kolaylaştıran bir sistem geliştirdim. Testleri bitince onuda git'e koyacağım. Buraya da yazarım.

    Bu arada yeni sistemimde kullandığım query builer'ıda size sunayım, büyüyünce ORM olacak fikir verebilirseniz sevinirim
    https://github.com/guncebektas/lenkorm




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.