Php: OO MVC desenler endişeleri ayrılığı fonksiyonel tarzı, hafif alternatifler?

3 Cevap php

The problem:

I have a legacy php app o coded in no particular style (bazı OO, fonksiyon kütüphaneleri, bazı şablonlar şablon yok) ben yavaş yavaş, yeniden temizlik, ve ekliyorum, hangi olduğunu.

Ben sisteme şablonları tanıtıldı, bu gerçekten çünkü verir html ve php arasındaki ayrılık temizlemek ve kodunu bir çok basitleştirmek olacağı hemen belli oldu. İşimde bir php MVC framework ile çalıştı, ve ben gerçekten MVC kavramını temsil endişeleri ayrılığı gibi oldum. Ancak, büyük bir codebases tanıtmak olacağını karmaşıklığı sevmiyorum. Ben sadeliği seviyorum ve gerçekten karmaşık bir yığın işin içine girdiğinde durmadan iç içe hata ayıklama ile de baş edemez. Zaman geçtikçe, ben kaynaklanmaktadır Clojure soruşturmaları, daha işlevsel ve stil bir fan daha fazla hale gelmiştir.

Ben 5.3 ve ötesinde php hvardırket olarak ben php için daha işlevsel bir tarzı taşımak istiyorum çünkü ben çok nesne yönelimli bir kodu olmadan optimal, php endişeleri ayırmak, ve bir yığın olmadan çok iyi bir yol var istiyorum.

Framing the solution:

  • Hiçbir büyük / karmaşık nesneler.
  • Hata ayıklama için bir kısa yığını.
  • Php 5.2 Koşu, bu debian dışarı geldiğinde kadar 5.3 yükseltmeniz mümkün olmayacak, bu nedenle fonksiyonel stil güzel olurdu, ama 5.3 araçlar bir süre için bana uygun olmayabilir.
  • Temiz & Bir vea kırık kod temeli birleştirmeye basit bir tema.
  • Geçerli kodu daha az etkisi, daha iyi.

3 Cevap

Ben bunun için kefil olamaz, ama Kohana hakkında iyi şeyler duydum

Eğer karmaşık bir site inşa ediyorsanız Kohana gibi bir çerçeve çok yardımcı olacaktır. Basit web siteleri için ben çerçeveler kullanmayı tercih. Ben bazı yardımcı fonksiyonları ile bir iskelet "çerçeve" şu temelde sadece bir ön denetleyicisi ile gitmek.

ön kontrolör isteği bakar ve denetleyici / sayfa yüklemek için hangi karar verir. Yüklü kontrolörü / sayfa sonra modelleri / ne olursa olsun ve bir şablon yükler vasıtasıyla ihtiyacı verileri alır.

request = /blog/13/i-like-birds front controller looks at request and loads the blog controller blog controller gets all the info it needs for post 13 and loads the blog template.

Fakat yine de, hangi çözümü kullanmanız gereken sitenin ihtiyaçlarına bağlıdır.

Bu soru oldukça eski olduğunu biliyorum, ama ben sadece aradığınız tam olarak ne gibi Bullet sesler denilen fonksiyonel bir tarzı PHP mikro-çerçeve yayınladı. Bir mikro-çerçeve olmak, gerçekten OOP değil ve yönlendirme için eşsiz fonksiyonel bir yaklaşım kullanarak çalışmak gerçekten ilginç ve farklı kılan. Hala PHP ile programlama :) eğer bir atış ver.