MVC sadece PHP programlama SEO mu?


9

Yaklaşık bir milyon "PHP çerçevesi" var. Ve çoğu kendilerini MVC modelini takip ederek faturalandırıyor . OsCommerce kodlama stilinin (SQL ve HTML ile yoğun bir şekilde karıştırılmış işleme mantığı) üstesinden gelmek hoş olsa da, sürdürülebilir bir uygulama tasarımı elde etmek için takip edilmesi kesinlikle daha basit ve daha kolay yaklaşımlar vardır.

Orijinal MVC konsepti GUI uygulamalarını hedef aldı. Ve Gtk / Python için buna göre takip etmek mümkün görünüyor. Ancak PHP web uygulamaları canlı Görüntülemeler (GUI öğeleri) ve kalıcı bir Controller çalışma zamanında çalışmaz. Sadece kullanılan kod + dizin gruplaması veya sınıf isimlendirmesini açıklarsa kesinlikle yanlış bir isimdir.

"MVC" PHP çerçeveleri için bir terim gibi görünüyor. Ve aslında bir ya da iki olgun PHP çerçevesi itiraf gördüm, ama yine de interna maç için ifade yeniden tanımlamak.
Genelde yılan yağı mı? Neden daha iyi terminoloji kullanılmıyor ve sürdürülebilir PHP için daha mantıklı bir kavram yayılıyor?

Bazı ayrıntılı akıl yürütme

Neden PHP uygulamalarının gerçek MVC modelini takip etmediğinden şüpheleniyorum:

Modeller : teoride, Modeller şişman olmalı ve iş mantığı içermeli ve kontrolörler ince işleyiciler (giriş-> çıkış) olmalıdır. Gerçekte PHP çerçeveleri sığ modelleri savunuyor . Örneğin CI ve Symfony, Model == ORM'ye eşittir. HTTP girişi bile denetleyici tarafından işlenir, model olarak değerlendirilmez.

Görünümler : AJAX ile indirimli geçici çözümler, web sayfalarında Görünümler olamaz. PHP çerçeveleri hala sayfaları dışarı atıyor. Arayüz hala sıradan HTTP modelini etkili bir şekilde takip eder, MVC olmayan uygulamalara göre hiçbir avantajı yoktur. (Ve son olarak, yaygın php çerçevelerinin hiçbiri aslında HTML yerine GUI Görünümleri için çıktı olamaz. Gtk / Konsol / Web çalıştırabilen bir PHP kütüphanesi gördüm, ancak çerçeveler yok.)

Kontrolör : Emin değilim. Denetleyicilerin büyük olasılıkla MVC modelinde uzun süren ve sürekli aktif olmaları gerekmez. PHP çerçeve bağlamında, çoğunlukla istek işleyicileri. Gerçekten tartışacak bir şey değil, ama sadece biraz modası geliyor.

Daha iyi tanımlayıcılar olur mu? Kısaltılmış PMVC veya HMVC gibi kısaltmalar gördüm. Açıklamalar orada daha belirsiz olsa da, belki bunlar mevcut web çerçevelerini daha az hokeyle tarif eder?


Sonuç olarak: PHP çerçeveleri orijinal MVC'ye benzer bir konsept uygular . Bence burada en iyi çivilenmiş: stackoverflow.com/questions/1549857/simple-php-mvc-framework/…
mario

Ben "çoğu PHP çerçeveler Views sadece sayfa olarak kullanın" okumak için sürpriz oldu. Kullandığım tüm PHP çerçevelerinde, Görünüm herhangi bir şey olabilir, temelde sadece bir HTML şablonu. Yani bir metin kutusu, bir kenar çubuğu, bir gezinti çubuğu, bir statik metin bloğu ve hatta bir sayfa düzeni olabilir. Views içindeki Görünümleri gömmenize izin vermeyen, gerçek iş mantığınız / işleminiz önceden Kontrolör'de yapıldığı sürece hemen hemen her şeyi yapmanıza izin vermeyen bir çerçeve düşünemiyorum.
Lotus Notes

Model (değil çoğul) a, tabaka . Tek bir dosya veya sınıf değildir. Etki alanı nesneleri, veri eşleştiricileri ve hizmetlerin bir koleksiyonudur. Bunu okuyun .
James

3
... SEO? "Arama motoru optimizasyonu"?
Izkata

Yanıtlar:


12

Bence buna tamamen yanlış bakıyorsunuz. Bir GUI uygulaması ve bir web sayfası birbirinden ayrıdır, bu nedenle MVC'nin tam olarak aynı tanımı her ikisi için de işe yaramaz. MVC ideal hakkında daha fazladır: ekran ve mantık gibi uygulamanın belirli bölümlerini ayırmak.

PHP'de (veya genel olarak web'de), Görünüm web sayfasının kendisidir: HTML çıktısı. Tanımınıza göre "canlı" değildir, ancak denetleyiciye geri dönmek için bağlantıları tıklamanız yeterlidir (başka bir sayfa isteği).

Denetleyici ve Modeli şeyler farklılık yok nereye açıkladı gibi olduğunu. PHP'de model veri katmanı olma eğilimindedir ve veritabanı ile etkileşime girer. Ancak durum hala modelleniyor ve denetleyici, sayfa başına yalnızca bir kez olsa bile uygulama akışını kontrol ediyor.

Bu nedenle "Model-View-Controller" adı, GUI uygulamalarında web uygulamalarına karşı farklı bir uygulama olsa da mükemmel bir şekilde mantıklıdır.


MVC'nin soyut konseptiyle hiç tartışmam yok. Benim itirazım PHP çerçevelerinin aslında sadece Pasif-MVC'nin uygulanması konusunda dürüst olmaması. "Model-View-Presenter" kalıbı bile daha gerçekçi bir tanımdır. Ancak, terimleri farklı bir alana uyguladığınızda terimlerin bükülmesi gerekir. Orijinal soru; Bükme terimi onu bir terim haline getirebilir mi?
mario

3

PHP çerçevelerinden habersiz olduğum için bu durum düşük seviyeli bir dil görünümünden görülüyor.

Modeller:

teoride, Modeller şişman olmalı ve iş mantığı içermelidir

Bu tamamen yapmak için, ben PHP bunun ile ne yapmak görmüyorum ...

Modeller PHP'de veri tabanı ile iletişim kurabilen veri sınıflarıdır,
o zaman istemciye aynı modeli veya JSON formatında kısmi bir modeli de gönderebilirsiniz.

Ben iş mantığı demezdim, daha çok veri mantığı (doğrulama, veritabanı etkileşimi, ithalat / ihracat, ...) gibi.

ve kontrolörler ince işleyiciler olmalıdır (giriş-> çıkış)

Controller sınıflarınız Model sınıflarıyla etkileşime girer, gerçekten incedirler.

Çıktıya dayanarak, Modellerle bazı şeyler yapın ... Ve istemciye bir ModelView döndürün ...

Gerçekte PHP çerçeveleri sığ modelleri savunuyor. Örneğin CI ve Symfony, Model == ORM'ye eşittir. HTTP girişi bile denetleyici tarafından işlenir, model olarak değerlendirilmez.

Bu PHP çerçevelerinin gerçekten farkında değilim ...

Ancak HTTP girişi denetleyiciye ulaşmadan önce ele alınmalıdır,
GET ve POST verilerini iyi yönlendirme ve parametrelere dönüştüren bir sınıf kolayca oluşturabilirsiniz.

Bu tam olarak ASP.NET MVC 2'de olan şey ve bununla ilgili yanlış bir şey
yok, bunun PHP ile nasıl olacağını bilmiyorum ama sanırım yakından ilişkili olacak.

GET ve POST verilerini kolayca bir modele dönüştürebilirsiniz, model belki bunun için yapıcı mantık içerebilir. Veya bu amaçla bazı ayrı sınıflar eklenebilir.


Görüntüleme:

AJAX indirimine sahip geçici çözümler, web sayfalarında Görünümler olamaz. PHP çerçeveleri hala sayfaları dışarı atıyor.

Neden göremedim, tek fark protokol ve PHP JSON, vb dönebilir olduğunu ...

Bir sayfa sizin görünümünüzdür ve AJAX + JSON aracılığıyla istekte bulunabilir ve güncelleyebilir.
Yine, bu PHP çerçevelerinin gerçekten farkında değilim ama ASP.NET MVC 2'de bu şekilde çalışıyor.

Arayüz hala sıradan HTTP modelini etkili bir şekilde takip eder, MVC olmayan uygulamalara göre hiçbir avantajı yoktur. (Ve son olarak, yaygın php çerçevelerinin hiçbiri aslında HTML yerine GUI Görünümleri için çıktı olamaz. Gtk / Konsol / Web çalıştırabilen bir PHP kütüphanesi gördüm, ancak çerçeveler değil.)

Elde ettiğiniz tek avantaj (ve normal uygulamalarda da aynıdır) Model (Veri) + Görünüm (GUI) + Denetleyiciye (Mantık) ayrılmasıdır. Benzer şekilde, aslında GUI Görünümleri yerine HTML veya JSON'a çıkış yapabilen bir C ++ çerçevesi görmezsiniz.


Denetleyici:

Emin değilim. Denetleyicilerin büyük olasılıkla uzun süren ve MVC modelinde sürekli aktif olmaları gerekmez. PHP çerçeve bağlamında, çoğunlukla istek işleyicileri. Gerçekten tartışacak bir şey değil, ama sadece biraz modası geliyor.

MVC, Denetleyicinin çalıştığı ve ne kadar süreyle eşleşmediği bir yazılım mimarisi / modelidir.


1

Ancak PHP web uygulamaları canlı Görüntülemeler (GUI öğeleri) ve kalıcı bir Controller çalışma zamanında çalışmaz.

Hayır, eminler!

AJAX uygulamalarını düşünün, ardından görünüm denetleyiciye bir şey sorar ve kısmi bir görünüm alır,
bu görünüm veya veriler sayfanın herhangi bir yerinde doldurulur ve böylece canlı olarak güncellenir.

Denetleyici de kalıcıdır çünkü çerezleri / oturumları kullanabilirsiniz.

"MVC" PHP çerçeveleri için bir terim gibi görünüyor.

MVC bir Yazılım Mimarisidir, bazı çerçeveler onu bir vızıltı olarak kullanabilir, ancak diğerleri bunu düzgün bir şekilde yapabilir ... Wikipedia'daki bazı çerçevelerin listesine
bakın .

MVC sadece php programlama SEO nedir?

MVC ve SEO birbirinden ayrı iki şey, ama evet ... MVC daha popüler hale geliyor.


1
Elbette, AJAX UI öğeleri onu yaklaştırıyor, ancak bu objektif bir çözüm. Ve hala tanımı büküyor gibi görünüyor. (Btw, Cappucino.org ve diğer gerçek araç setlerinin farkındayım, ancak PHP çerçevelerinin brütüne başvuruyordum.)
mario

Geçici çözüm olarak adlandırmazsınız, Qt ve diğer çerçeveleri de geçici çözümler olarak sayabilirsiniz ... Yalnızca sunucu ve istemci arasında veri aktarım yükü vardır ve mevcut bağlantı hızları ve gecikmelerle bu çok da fazla değildir artık. Tanımın nasıl büküldüğünü göremiyorum: Desen, etki alanı mantığını (kullanıcı için uygulama mantığı) giriş ve sunumdan (UI) ayırır, her birinin bağımsız geliştirilmesine, test edilmesine ve bakımına izin verir.
Tamara Wijsman

1
Ne demek istediğini anlıyorum. PHP'yi uygulama sunucusu ve AJAX'ı mantık ve kullanıcı arayüzü arasında RPC mekanizması olarak yorumluyorsanız, evet. Yine de HTTP'de geçici bir çözüm olarak adlandırıyorum. OTOH, MVC mezhebi ile ilgili olup olmadığından emin değil. Ben aslında sadece "" "MVC" "" tarif ettiğiniz duyarlı ve interaktif web kullanıcı arayüzleri sağladığı ima itiraz ediyorum.
mario

-1

Bence php MVC kullanarak web programcılar getiriyor. MVC ile nasıl çalışacağınızı bildiğinizde örneğin Java'dan PHP'ye geçmek daha kolaydır.


+1 Ama bu sadece bir terminoloji avantajı mı yoksa Java uygulamasına yakın olan PHP çerçeveleri var mı? (Ve dolaylı olarak, Java GUI'lerinden veya Web / Struts'tan mı bahsediyorsunuz?)
mario

Tam olarak bilmiyorum ama zend çerçevesini kullanıyorum ve sanırım diğer MVC çerçeveleriyle aynı: modelinizde, görünümünüzde ve kontrol cihazınızda ne yapacağınızı bilmek çok önemlidir ve bu yüzden programlama dünyası ve internetscripting arasındaki boşluk dünya kapalı. Belki de yazı yazma yaşı sona erdi ve bunu görmek isterim. Çok buggy.
10:10
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.