Gercekten cok guzel bir makale, tesekkurler jure.
Artik basma kalip, gelisi guzel kod yazan web programcilarinin fonksiyonel ve nesneye yonelik profesyonel kod yazimina gecmeleri acisindan epey egitici olmus.
Nesneye yonelik programlama konusunda bilgi eksigi olanlar http://www.ceviz.net/php-ve-nesneye-yonelik-programlama_a77.html veSmarty kullanmak istemeyenler dehttp://www.ceviz.net/php-nesneleri-template_a270.html makalelerini inceleyebilirler.
anov
Server-side kontrol mantığı var mıdır?
Php bilmem, sadece merak ettiğim için soruyorum.
asp.net te Bir textbox un içerdiği değere .Text diyerek ulaşabilirsiniz. Smarty ile 3 katmanlı mimari kullandığımda php bana bu tip imkanları sağlayabilir mi?
Gerçekten bilinçli ve doğru kodlamanın temellerini anlatmışsın
tebrik ediyorum
jure
asp.net vs smarty
asp.net ile php yi bu açıdan kıyaslamak mümkün değildir. bende asp.net'i çok iyi bilmem ama bildiğim karadıyla object oriented temel üzerine kuruldu yani herşey nesnedir mantığıyla çalışıyor.
ayrıca asp.net ile karşılaştırma yapacak olursak
.aspx -> .tpl (smarty )
.aspx.cs -> .php
.cs -> .php (class)
dosyaları olarak birbirine karşılık gelir. yani sonuç olarak bunu smarty ile değilde php kısmında yapmak gerekecektir. çünkü asp.net te tex1.Text aspx.cs dosyasında yapılıyor. bir form classı yapıldığında php dede bu mümkün olabilir.
anov
Tebrikler, fakat...
Öncelikle tebrik etmek istiyorum, bir makale için oldukça iyi bir uygulama olmuş. Fakat katmanlar ile ilgili bazı problemler olduğunu düşünüyorum. Biraz eleştiri yazayım bu kadar övgünün üstüne
1- Hiç bir zaman veri katmanının yaptığı işler, iş katmanında bulunmaz. Yani iş katmanı veri/veritabanı/veri kaynağı hakkında hiç bir şey bilmez. Sizin iş katmanı olarak tanıttığınız sınıflarınızda SQL kodları var, bu mimari açıdan yanlıştır. Database layer bir dosya olarak belirtilmiş, aslında o dosya da veritabanına erişimi kolaylaştıran bir Helper nesne ve iş katmanı olarak belirtilen sınıfların bir kısmı da aslında veri katmanına dahil edilmeli.
Ayrıca sistem klasörü içindeki dosyalar hangi katmana dahil oluyor? Belirtilmemiş.
Sınıfların tasarımı ile de ilgili problemler var, sınıfların içindeki metodlar birbirini kullanmıyor hiç ve hemen hemen hiç sınıf attribute'u ve property'si tanımlanmamış. Sınıflar kabaca sadece namespace görevi görüyor gibi.
Bana kalırsa OOP'un faydalarını kullanabilmek için Design Patterns incelenmeli ve o pattern'leri kullanan sınıflar tasarlanmalı. Heralde OOP'a en temiz geçiş bu olur.
evet haklsısınız bazı problemler olabilir, ben çok iyi bişey yaptım demiyorum fakat yararlı olacağı sanıyorum. Bu tip bilgileri bulmanız çok zor özelikle türkçe kaynak açısından.
" Ayrıca sistem klasörü içindeki dosyalar hangi katmana dahil oluyor? Belirtilmemiş."
"iş katmanına dahil elbette gerekli olacağını düşünememiştim".
"Hiç bir zaman veri katmanının yaptığı işler, iş katmanında bulunmaz."
Aslında sql kodları yoktu
$db->query($table,$fields,$values,$where);
gibi idi fakat ben bunu yetiştiremeyeceğim için (pazartesi finallerin başlıyor) böyle bir başlangıç yapma zorunluluğu hissettim.
" Sınıfların tasarımı ile de ilgili problemler var, sınıfların içindeki metodlar birbirini kullanmıyor "
ilk baştaki sınıf şemasına bakarsanız bunu bir başlangıç olduğunu görürsünüz. İlerleyen yerlerde methodlar birbirini elbet kulanacaktır ama yine dedigim gibi bunu asp.net ile kıyaslamamak lazım.
php4 ve classlar ile ilgili ayrıntılı bilgi http://www.php.net/manual/en/language.oop.php buradan alınabilir.
Sonuçta bu projenin iş katmanında su anda 3-5 fonksiyondan kullanıyor şu aşamada bu giriş için yazılmıştır ileride biraz daha gelişecektir tabi bunu derken bu benim bakış açım olduğu için yanlış şeylerde illaki yapılacaktır. Bunlarıda siz söyleyince öğreneceğiz.
Teşekkürler
Konunun özellikle ilk kısmı oldukça anlaşılır. PHP bilmediğim için öyle söylüyorum. Gerçekten çok güzel çalışmalar bunlar.. Yazan tüm arkadaşlardan Allah razı olsun.
flash tabanlı ria geliştiricisi olarak bahsettiğiniz model bizimde kendi web tabanlı projelerde kullandığımız modeldir.Buna kısaca mvc ingilizce olarak model view controller olarak ifade edilmektedir.Yanlız ben oldum olası php ile kod yazmayı sevemediğimden bu mimariyi phpde uygulama fırsatım olmadı.Makaleniz umarım buna bir önayak olacaktır.
Flash uygulamaları geliştiren arkadaşlar model kısmında amfphp projesinden faydalanarak, çok daha ayrık uygulamalar geliştirebilmektedir.Nitekim flash componentleri tamamıyla bu mimari üzerine geliştirilmiştir.
Bunu dışında mvc tek başına bir pattern olmaktan daha ziyade Observer ve Singleton gibi patternları kendi yapısında derlemiş karma bir patterndir.Mvc yanı sıra bu patternlara da gözatmanın faydası olacaktır.
Can
Asp.net versiyonu
Elinize saglik baya bir emek harcanarak yazilmis bir makale. ben php ile ilgilenmedigim icin kodu incelemedim ama n-tier mimarilerde pattern kullanimini ögrenmek istiyorum.bu makalenin yada benzerinin asp.net versiyonu yazilsa tam süper olucak. birde pattern ler kullanilirsa dadindan yinmez. :)
jure
makalede değişiklik
anov'un söylemesi üzerine veritabanı sınıfında (database.class.php) bazı değişiklikler yaptım. bundaki değişiklikler nedeniyle news.class.php ve news.php dede bazı değişiklikler oldu. bilginize. 23.05.2007
anov
Bu tür çalışmaların devamını dilerim
Yanlış anlaşılmak istemem, php ile asp.net karşılaştırılamaz tabii bunun için erken olabilir. Ancak bir gün php nin o güce erişebileceğini tahmin edebiliyorum. Bu tip bilgilendirici çalışmaların devamı ile ancak biz bu yöne yönelebiliriz. template mantığından ziyade tam anlamıyla (render) mantığını içinde bulunduran ve kolay kullanılabilen (kod ve html i veya kod ve sql i iç içe barındırmayacak) bir yapıyı bir gün gerçekleştireceğini ümit ediyorum. Bu durumda php yi "henüz yeterince olgunlaşmamış" olarak görmemi umarım anlayışla karşılayacaksınız. Kolay gelsin.
İyi bir çalışma olmuş, bayağıdır patTemplate takıntısından kurtulup smarty ile siteler yapmaya başlasam dediğim zamanda okudum makalenizi, direkt elimdeki bir işi smarty ile yapmaya başladım, smarty nin hızı konusunda aklıma takılan birkaç durum vardı ama dün yaptığım testlerden sonra, sabit bölümleri(menuler, ust bar vb.) cache atarak yaptığım ölcümlerde hız kaygımın boşa olduğu ortaya çıktı.
\libs\plugins içerisinden kullanmadiginiz veya kullanmayacaginiz pluginleri silebilirsiniz.
güzel ve aydınlatıcı bir makale olmuş. teşekkürler
o--d
Devamını bekliyoruz
Makalenin devamını diliyorum. Tesekkurler paylastığın icin.
Devamını bekliyoruz gerçekten hoş bir makale.
çok sağolun tam smarty nedir onu araştırıyordum üstüne bu makaleyi buldum ALLAH razı olsun
anılkan
gayet başarılı bir çalışma..
Emeğinize sağlık. Bence makalenizin devamını yazmaya hemen başlamalısınız.
emeğenize sağlık çok güzel teşekkürler....
Gerçekten açıklamalar ve örnekler çok güzel hazırlanmış, kutlarım...
Sahin
Tebrikler ve tesekkurler
Özellikle smarty ile ilgili örnek türkçe kaynak bulmak oldukca zor eger ki yeterince kaynak olsa daha cok kisi smarty ile proje gelistirmeye basliyacaktir tebrik ederim Emre güzel calisma.
Emre
projenin devamı
artık bu sistem üzerinde çalışmadığımdan bu projeyi devam ettiremiyorum. codeigniter (codeigniter.com) + smarty (smarty.php.net) tabanlı bir sistem üzerinde calısmalarım sürüyor. Eğer zaman bulabilirsem bunlar ile alakalı da bir yazı yazmaya çalışırım.
bunun gibi türkçe makaleler bulmak gerçekten güç.böyle bir girişimde bulunduğunuz için tebrik ediyorum.bizlerin eleştirileriyle de daha anlaşılır ve doğru makaleler yazacağınızı umuyorum.
makale için teşekkurlerimi iletmeyi kendime bir borç bilirim
makalenizden faydalandım.
teşekkürler ediyorum..
gercektende cok yayarı dokundu
gercektende cok yayarı dokundu
makalenin devamını yazmayacağınızı söylemişsiniz.
makaleyi uyguladım ve şu anda kendimi yarım bırakılmış hissediyorum. bu makaledeki diğer dosyaları bulabileceğimiz -yabancı kaynak- var mı acaba.?
teşekkürler...
bu dosyaları ben olusturdugum icin baska yerde bulamazsınız. ayrıca programlamayı tamamen bırakmıs durumdayım. devam etmesi gibi bir olasılık hiç kalmadı. kolay gelsin.
Uygulamanın planını gösteren bir sınıf şeması vermiştiniz. O şemadaki dosyaların içerisinde olması gereken fonksiyon isimlerini yazsanız ve biz de o ipuçlarına göre uygulamanın devamını geliştirsek.?
Yani şöyle..:
search.class.php : (var bulunan; var bla bla; metod search; metod bla bla
bu şekilde ana planı çizebilirseniz sanırım uygulama geliştirmek adına bu siteyi takip eden birçok üyeye güzel bir alıştırma hediye etmiş olursunuz.?
teşekkürler...
gozel bir makale yapmişsiniz.Teşekkürler.Admin panel ile bilgi verseydiniz güzel olurdu.
esen
güzel olmuş ama
ama ben henüz programcı olma yolundayım pek de bişey anlamadım ellerinize sağlık güzel bilgiler edindiğimde oluyor bi de bu işe yeni başlamaya adım atmış insanlar için ele alacak bi yazı yassanız daha da güzel olur programcı olmayı çok istiyorum ama bu işe nasıl nerden başlmalıyım bu tür sorulara cvb olabilecek bi yazı
Emre
yeni başlayanlar için
sitede yeni başlayanlar için yazılmış bir sürü makale bulabilirsiniz.