1. sayfa
Yillar sonra biseyler yapmaya kalkismis basarili ve ise yarar bir paylasim gordum. Mutluyum. Basarilar. |
Teşekkür ederim. Desteklerinizle büyüyecek inşallah |
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ı.
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:
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. { 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.
Bir insan 6 ay önce yazdığı koda baktığında utanmıyorsa kendini yeterince hızlı geliştiremiyor demektir. :) |
Tebrikler guzel paylasim olmus |
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 |
1. sayfa
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
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.