Etrafa bakarak ve mevcut olanları öğrenerek MVC çerçevelerinin nasıl çalıştığı hakkında çok şey öğrendim. Gördüğüm her çerçevenin, her denetleyicideki her yöntemin kendi şablon dosyasına sahip olduğu bir düzeni var gibi görünüyor. Böylece giriş düzeni, çıkış düzeni, kayıt vb. Vesaire.
Sorum, tüm sayfa için tek bir dosyada nasıl ve neden bir şablon oluşturmanız gerektiğidir. Diyelim ki birden fazla sayfada bir giriş formu göstermek istediniz, görüntülemek istediğiniz her şablon için bir giriş formu oluşturmanız gerekmiyor mu? Bu DRY kurallarına aykırı değil mi?
Şimdiye kadar yaptığım bir şey, şablon değişmez bloklarını oluşturmak ve ardından her sayfayı oluşturmak için bunları birleştirmek. Yani böyle bir şey yapmak yerine,
$ başlık = "(! LANG: Falan bla bla"; $user = "Jon Miller"; include "index.phtml"; !}
yaptım
$ başlık = "(! LANG: Falan bla bla"; include "header.phtml"; $user = "Jon Miller"; include "user.phtml"; include "login_form.phtml"; include "footer.phtml"; header.phtml !}
Her zaman olduğu gibi, bunu nasıl ve neden doğru bir şekilde yapacağımı bilmek istiyorum ... Bu, DRY kuralına aykırı görünüyor.
4 yanıt
Tek kelime: Organizasyon. Sayfanın her bir bölümünü bölmek, her birinin ayrı ayrı görüntülenmesine/düzenlenmesine olanak sağlayacaktır. Bu basit konsept çok kullanışlıdır. Örneğin, bir ekipte oturum açma sürecini yönetmek isteyen herhangi biri, login_form.phtml'yi düzenlemeleri gerektiğini kolayca anlayabilir ve login_form.phtml'yi düzenlemenin istemeden diğer işlevlere müdahale etme olasılığının daha düşük olacağından emin olabilirler.
Hepsinden iyisi, ben böyle yapıyorum (aslında değil, ama öyle görünüyor).
$ Başlık = "(! DİL: Flanş Flanş Flanş"; $User = "Jon Miller"; $ThemeName = "MyGreenPage"; $Contents = array("User", "Login_Form"); function Include($FileName) { if (file_exists($FileName)) include $FileName; } !}
MyGreenPage.phtml:
kullanıcı.pcss:
/ * Kullanıcı tarafından ihtiyaç duyulan bazı stiller * /
Kullanıcı.pjs:
/ * Kullanıcı tarafından ihtiyaç duyulan bazı komut dosyaları * /
Kullanıcı.phtml:
Login_Form.pcss:
/ * Login_Form için gereken bazı stiller * /
Login_Form.pjs:
/ * Login_Form için gereken bazı komut dosyaları * /
login_form.phtml:
Yaptığım şeyin bu olmadığını (OOP kullandığımı) tekrar hatırlatmama izin verin, bu nedenle bu tam olarak olduğu gibi çalışmayabilir ve düzenlemeniz gerekebilir.
Düzenler ve Görünüm Asistanları kavramlarını kontrol etmelisiniz. Bu kavramların Zend Framework versiyonuna bağlıyken, diğer MVC çerçeveleri (ve MVC konsepti) de bunlara sahip olmalıdır.
Temel fikir, "görüntüleme" sayfanızın - örneğin bir giriş formu - site düzeninize - sitenizde kullanılan genel şablona - dahil edilmesidir. Farklı bir görünüme sahip, örneğin bir kullanıcı profiline sahip farklı bir denetleyici talep ettiğinizde, o görünüm de aynı düzene dahil edilir.
Tüm sayfalarda oturum açma formu gibi bir şeyi etkinleştirmek için görünüm yardımcısını kullanabilirsiniz. Bu görünüm yardımcısı, oturum açma durumuna bağlı olarak mevcut kullanıcıyı görüntüleyebilir veya bir oturum açma formu görüntüleyebilir. Görünüm yardımcıları, düzene dahil edilebilir veya belirli bir denetleyici tarafından dahil edilebilir (MVC çerçevesi bazı tür oluşturma segmentlerine izin verdiği sürece).
İki adımlı "include" yöntemi, parçaların satır içi eklenmesinden daha iyi çalışır (üstbilgi, ardından içerik, ardından altbilgi dahil - şu anda yaptığınız şey budur), çünkü şablonlarınızın HTML etiketlerini ayırması gerekmez. Zend kılavuzunda, düzen görünümü şablonlarının iyi bir görsel örneği vardır.
PHP ile HTML şablonları oluşturmanın en yaygın yolu şu popüler şablonlardan birini kullanmaktır:
Alternatif olarak, HTML'nize şuna benzeyen yer tutucular koyabilirsiniz:<% variablename %>... Sadece HTML'nizi yükleyin, normal ifadeyi çalıştırın, tüm yer tutucuları bulun ve bunları uygun değişkenlerle değiştirin.
Alternatif olarak, HTML'nizi yükleyebilir, şöyle ayrıştırabilirsiniz. DOM belgesi ve ardından DOM'nizi değiştirin. bir kitaplık oluşturdum
Bu yazımda sizlere sitelere neden ihtiyaç duyulduğunu ve bunlarla ne kadar para kazanılabileceğini anlatmayacağım. Burada sadece farklı araçlar kullanılarak oluşturulan siteler arasındaki farklardan bahsetmek istedim.
Normal bir HTML sitesi düşünün
Bir yandan, esasen statik olan normal bir HTML sitesi alacağız. Basitçe söylemek gerekirse, bağlantılarla birbirine bağlanan bir dizi bilgi sayfası vardır. İstisnalar olsa da, genellikle böyle bir sitede çok fazla sayfa yoktur.
Ve bu tür sitelerde çok az sayfa var çünkü böyle bir site büyümeye başladığında, yönetimi çok elverişsiz hale geliyor. Bu nedenle kişi ya siteyi izlemeyi tamamen bırakır ya da bir tür içerik yönetim sistemi (CMS) kullanmaya çalışır. Sitelerini otomatik hale getirmek ve dolayısıyla daha yönetilebilir hale getirmek için WEB için programlama dilleri öğrenmeye çalışan insanlar da var.
Ancak deneyimlerin gösterdiği gibi, yalnızca birkaçı bu görevle başa çıkıyor ve siteleri büyümeye ve gelişmeye devam ediyor.
Peki ya diğer herkes?
Birisi internette kazıyor, biri kağıt kitap almaya çalışıyor. Ancak bu tür programlama dillerinin yapısı hakkında temel bilgiler olmadan, site oluşturmanın temellerini anlamadan, bu tür girişimler genellikle hiçbir şeyle sonuçlanmaz.
Öte yandan, bir grup düz HTML ve basit bir web programlama dili olan PHP kullanılarak yapılmış bir siteye bakalım.
Bu sitenin bir öncekinden en önemli farkı, böyle bir sitenin bloklardan kurucu olarak oluşturulabilmesidir. Bir web sitesi başlığı yaptık - ayrı bir dosyaya yerleştirdik, site navigasyonu ile bir sol blok oluşturduk - ayrı bir dosyaya yerleştirdik, vb.
Bize ne veriyor?
Bu özgürlük verir. Onlar. şimdi bu blokları ana çerçeveye bağlayabiliriz ve sonunda sitede 10.000 sayfamız olsa ve aniden bazı navigasyon öğelerini değiştirmemiz gerekse bile, o zaman bunda karmaşık bir şey olmayacak. Dosyayı gerekli blokla açtık, düzenledik ve hepsi bu! 10.000 sayfanın tamamında bu değişiklik bir anda gerçekleşti.
Ek olarak, böyle bir sitenin tüm yararlı bilgileri (makaleler, mal ve hizmetlerin açıklamaları, dersler, notlar vb.) bir veritabanında saklanabilir, bu da daha da fazla avantaj sağlar:
- Site daha az yer kaplar;
- Veri yedekleme basitleştirildi;
- Herhangi bir verinin değiştirilmesini kolaylaştırır;
- Herhangi bir bilgiyi saymak mümkün hale gelir (sayfayı kaç kez görüntülediğiniz, bir dosya indirdiğiniz, eklenen yorumlar vb.);
- Sitede birçok hazır PHP betiği kullanabilirsiniz;
- vesaire.
HTML veya PHP
Arabalı HTML ve PHP siteleri arasında bir benzetme yaparsak, modern arabalar daha konforlu, daha güçlü, daha işlevsel hale geldikçe ve aynı zamanda 50 yıl önceki analoglardan daha az yakıt tüketmeye başladıkça, PHP sitesi HTML rakibinden daha hafif, daha işlevsel, kullanımı daha kolay ve daha mobil hale geliyor.
Ne yazık ki bir makale çerçevesinde bu konuyu tam olarak açıklamak mümkün değil ama sanırım burada anlattığım noktalardan bile çağa ayak uydurmak için hangi siteyi oluşturmanın daha iyi olduğu sonucuna varabilir ve bir site oluşturma çabasında iyi bir yatırım getirisi.
Evgeni Popov- Sıfırdan bir PHP sitesi oluşturma sürecinin tamamının doğrudan bilgisayarınızın ekranında sesli açıklamalarla gösterildiği "Video Format 2 veya PHP + Yeni Başlayanlar için MySQL'de Çevrimiçi İşletmenin Tüm Teknik Anları" adlı 22,5 saatlik bir video kursunun yazarı.
PHP, gömülü bir sunucu tarafı programlama dilidir. Sözdiziminin çoğu C, Java ve Perl'den ödünç alınmıştır. Ayrıca birkaç benzersiz yalnızca PHP işlevi ekledi. Bu dilin temel amacı, dinamik olarak oluşturulmuş PHP HTML sayfaları oluşturmaktır.
PHP'den HTML'ye
Karmaşık web sayfaları oluştururken, belirli görevleri gerçekleştirmek için PHP ve HTML'yi birleştirmeniz gerekecektir. İlk bakışta bu karmaşık görünebilir, çünkü PHP ve HTML iki bağımsız disiplindir, ancak değildirler. PHP, HTML ile etkileşime girecek şekilde tasarlanmıştır ve kodu, sayfanın işaretlemesine dahil edilebilir.
HTML sayfalarında PHP kodu özel etiketler kullanılarak eklenir. Kullanıcı sayfayı açtığında, sunucu PHP kodunu işler ve ardından işleme sonucunu gönderir (kendisini değil PHP kodu) tarayıcıya girin.
HTML ve PHP'yi birleştirmek oldukça kolaydır. PHP betiğinin etiketlerin dışındaki herhangi bir bölümüPHP derleyicisi tarafından yok sayılır ve doğrudan tarayıcıya iletilir. Aşağıdaki örneğe bakarsanız, tam PHP betiğinin şöyle görünebileceğini görebilirsiniz:
Merhaba bugün.