PHP'de tek dosya düzeni mantıklı olur mu?

Mucosoft

Megapat
Katılım
5 Mart 2014
Mesajlar
5.514
Makaleler
12
Çözümler
41
Şöyle bir şey düşünün. Main.php adında bir dosya olacak. İçinde sınıflar yer alacak. Her sınıfta ayrı sayfalar bulunacak. Ajax ile birlikte bağlantıya tıklayınca sayfa hemen yüklenecek.

PHP:
class About()
{
 //Kodlar
}
class Contact()
{
 //Kodlar
}
class Forum()
{
 //Kodlar
}
//AJAX ile sayfa yönlendirmesi ve ana sayfa.

Bu durum dosya boyutunu da arttıracak. Performans nasıl olur? Sizce böyle bir sistem ne kadar mantıklı?
 
Güncel php versionlarında dahili olarak opcode cache mekanizması olduğu için tek dosyada birleştirmenizle ayrı ayrı yazıp import etmeniz arasında kayda değer bir performans farkı olmaz.
 
Güncel PHP versiyonlarında dahili olarak opcode cache mekanizması olduğu için tek dosyada birleştirmenizle ayrı ayrı yazıp import etmeniz arasında kayda değer bir performans farkı olmaz.
Peki nasıl bir kod yapısı önerirsin? Class sistemini kullanarak böyle bir şey yapmak sence güzel bir fikir mi?
 
Peki nasıl bir kod yapısı önerirsin? Class sistemini kullanarak böyle bir şey yapmak sence güzel bir fikir mi?
Bu çok genel bir soru.

Bence php zaten web için geliştirilmiş bir dil olduğu için tek başınıza proje geliştiriyorsanız class gibi web için gereksiz soyutlamarla uğraşmak yerine kendinizce en anlaşılır şekilde kod yazmaya çalışmanız daha mantıklı olur. Class tabanlı projeler de geliştirmeye çalıştım php ile uğraştığım dönemde, class kullanmadan sık kullandığım kodları fonksiyon yaparak da yazmayı denedim benim için en verimli seçenek olabilecek en sade ve en kısa şekilde yazdığım kodlar ile ilerlemek oldu.

Tabi eğer ekip olarak proje geliştiriyorsanız herkesin kafasına göre en kısa yoldan yazdığı kod ekibin eline ayağına dolanır. Bu nedenle Laravel, CodeIgniter gibi kütüphaneler var. Eğer php ile ilgili bir işe girmeyi vs. düşünüyorsanız Laravel başta olmak üzere bunlara bakmak daha mantıklı olabilir.
 
Sana kalmış bir şey. Performans olarak fark olmayacaktır ve kodlar çirkin görünecek.

Composer ile bütün sınıflarınızı ayırın namespace ile çekin.
Güzel gözükmesi için ve düzenli olması için class sistemini kullanacağım. Bu biçimde düzgün olacağı fikrindeyim.

Bu çok genel bir soru.

Bence php zaten web için geliştirilmiş bir dil olduğu için tek başınıza proje geliştiriyorsanız class gibi web için gereksiz soyutlamarla uğraşmak yerine kendinizce en anlaşılır şekilde kod yazmaya çalışmanız daha mantıklı olur. Class tabanlı projeler de geliştirmeye çalıştım php ile uğraştığım dönemde, class kullanmadan sık kullandığım kodları fonksiyon yaparak da yazmayı denedim benim için en verimli seçenek olabilecek en sade ve en kısa şekilde yazdığım kodlar ile ilerlemek oldu.

Tabi eğer ekip olarak proje geliştiriyorsanız herkesin kafasına göre en kısa yoldan yazdığı kod ekibin eline ayağına dolanır. Bu nedenle Laravel, CodeIgniter gibi kütüphaneler var. Eğer php ile ilgili bir işe girmeyi vs. düşünüyorsanız Laravel başta olmak üzere bunlara bakmak daha mantıklı olabilir.
Benim mevcut bir projem var. Super app olarak nitelendirilebilir. İçerisinde oyun, forum, blog, bilgi merkezi, belge sistemi ve bunun gibi daha birçok şey var. Bundan dolayı daha profesyonel bir seçeneğe yönelmeliyim. En doğrusunun class yapısını kullanmak olacağını düşünüyorum.
 
Class'ı ne amaçla kullanacağınız da önemli, veritabanından çektiğiniz verileri kod yazarken daha rahat işlemek için kullanıyorsanız, tip bilgilerini vs. giriyorsanız yani temel olarak model oluşturmak için kullanıyorsanız işinizi kolaylaştırabilir ama kendiniz sıfırdan MVC benzeri bir yapı kurmak için class sistemi kullanacaksanız kod daha da karışabilir. PHP'nin avantajı bunlara gerek kalmadan da kod yazmanıza imkan vermesi çünkü PHP'nin kendisi zaten web dili. Örneğin csharp ile asp.net ile uygulama geliştiriyor olsanız mecburen bu yapılara girmeniz gerekecekti. Node.js de aynı şekilde. Ama PHP'de çok daha sade kod yazmak da mümkün. Tabii finalde size kalmış.

Güzel gözükmesi için ve düzenli olması için class sistemini kullanacağım. Bu biçimde düzgün olacağı fikrindeyim.

Benim mevcut bir projem var. Super app olarak nitelendirilebilir. İçerisinde oyun, forum, blog, bilgi merkezi, belge sistemi ve bunun gibi daha birçok şey var. Bundan dolayı daha profesyonel bir seçeneğe yönelmeliyim. En doğrusunun class yapısını kullanmak olacağını düşünüyorum.

Class sistemi daha anlaşılır geliyorsa bu şekilde devam etmenizde hiçbir sakınca yok tabi ki.
 
Son düzenleme:
"Class sistemi" ne demek? Sınıfları, arabirimleri öylesine kullanmıyoruz. OOP olmadan, bir pattern'e uymadan yazdığınız kod günün sonunda "birleşmiş kod parçacıkları"ndan öteye geçmeyecektir. PHP'nin yapısı buna izin veriyor diye en kötü yolu seçmek mantıklı bir hamle değil.
 
"Class sistemi" ne demek? Sınıfları, arabirimleri öylesine kullanmıyoruz. OOP olmadan, bir pattern'e uymadan yazdığınız kod günün sonunda "birleşmiş kod parçacıkları"ndan öteye geçmeyecektir. PHP'nin yapısı buna izin veriyor diye en kötü yolu seçmek mantıklı bir hamle değil.
Ben class sistemi ile daha düzenli bir yapıya ulaşmak istiyorum. Dosyalar arasında gezmek bana göre değil, ben tek dosya düzenini savunuyorum. Çünkü veriye daha hızlı ulaşmalıyım ki kodlarken zaman kazanalım, değil mi? :)

Ayrıca sayfa sistemi yerine kategorize bir sistem kullanmayı düşünüyorum. Örneğin AdminPanel sınıfı içerisinde yönetici paneli ile ilgili sınıflar bulunacak. Bunun gibi hiyerarşik bir düzen fikrim var.
 
Class ile yazdım düzenli oldu gibi bir mantık doğru değil. Düzgün kullanmazsanız daha da karışık hale gelebilir.

Class kullanma ile dosyalara bölme, bölmeme kararı da ayrı konular. Hatta yaygın olarak her class ayrı dosyaya yazılıyor çoğu programlama dilinde. Her şeyi tek dosyada tutmak istiyorsanız class kullanmak zorunda değilsiniz. En basitininden class yerine düz fonksiyon da kullanabilirsiniz bunun için.

Class sistemi sizin kullanımınızda ne avantaj sağlıyor önce bunu netleştirmek lazım yoksa gereksiz zaman maliyeti ve karışıklık gibi duruyor.
 

Geri
Yukarı