Başlayanlar üçün nümunələr: MVC vs MVP vs MVVM. MVC memarlıq nümunəsi Mvc təsviri




Bootstrap çərçivəsi: sürətli adaptiv tərtibat

Bootstrap çərçivəsində adaptiv tərtibatın əsasları üzrə addım-addım video kurs.

Güclü və praktik alətdən istifadə edərək sadə, tez və səmərəli yazı yazmağı öyrənin.

Sifariş vermək və ödəniş etmək üçün tərtibat.

Pulsuz kurs "WordPress-də sayt"

WordPress CMS-ni mənimsəmək istəyirsiniz?

WordPress-də vebsayt dizaynı və tərtibatı üzrə dərslər alın.

Mövzularla işləməyi və planları kəsməyi öyrənin.

CMS WordPress-də vebsayt dizaynı, tərtibatı və quraşdırılması üzrə pulsuz video kurs!

*Sürüşməni dayandırmaq üçün siçanın üzərinə keçin.

Geri irəli

Veb İnkişafına Dost Yanaşma: MVC Modeli

MVC nədir? Bir sözlə, bu, daha strukturlaşdırılmış koda və bütövlükdə tətbiqə nail olmağa imkan verən inkişafa yanaşmadır.

MVC, Model-View-Controller deməkdir. Bu barədə daha ətraflı danışaq.

Bu gün veb proqramlar (saytlar) yaratmağın ən tipik iki yolu var.

Birinci yol, gəlin onu "Klassik" adlandıraq, bir faylda müxtəlif proqramlaşdırma və işarələmə dilləri üçün kod ola biləcəyini fərz edir.

Tutaq ki, faylın əvvəlində verilənlər bazasından bəzi məlumatların alınması üçün ona sorğu verilir. Burada biz SQL dili ilə məşğul oluruq - verilənlər bazası ilə qarşılıqlı əlaqə üçün nəzərdə tutulmuş xüsusi sorğu dili.

Bundan sonra, bir qayda olaraq, səhifənin html işarələnməsi başlayır (onsuz biz harada olardıq?). Üstəlik, html işarələməsinin içərisində saytı idarə edən və onun məntiqi olan PHP kodu lazımi yerlərdə daxil edilir. Ümumilikdə bir faylımız var: SQL, (X)HTML və PHP. Bu, artıq bir hodgepodge edir. Şəkli tamamlamaq üçün bura bir az daha CSS və bir az Javascript əlavə etməyi unutmayın və sonda elə bir qarışıqlıq yaranacaq ki, şeytan özü bu faylda ayağını sındıracaq.

Əlbəttə ki, əvvəlcə orada nə və necə baş verdiyini, niyə ehtiyacınız olduğunu və müəyyən funksionallığı əlavə etmək / silmək / dəyişdirmək üçün harada dəyişikliklər etməli olduğunuzu xatırlayacaqsınız. Bununla belə, sizə zəmanət verirəm ki, bir neçə ay ərzində kodunuza çaşqınlıqla baxacaqsınız, nə ilə əlaqəli olduğunu, faylı dəyişdirdikdən sonra hansı dəyişikliklərin "həyata keçiriləcəyini" və s. xatırlamağa çalışacaqsınız.

Mən demirəm ki, bu yanaşmadan tamamilə imtina etmək lazımdır, amma aydındır ki, ondan ağıllı və çox ehtiyatla istifadə etmək lazımdır.

İkinci yol sxemin istifadəsi ilə dəqiq bağlıdır "Model-görünüş-nəzarətçi".

Bu yanaşmanın mahiyyəti nədir və ondan istifadə işinizdə sizə necə kömək edə bilər?

Bu yanaşmanın əsas ideyası ehtiyacdır homojen elementləri müxtəlif fayllara ayırmaq. Çox sadə desək: bir fayl - bir dil. Ancaq bu çox kobud bir nümunədir. Bu son dərəcə nadirdir.

Fərqli dilləri müxtəlif fayllarda saxlamaq ideyası ilə yanaşı, əsas konsepsiya da budur faylların proqramda yerinə yetirdiyi funksiyalara görə qruplara bölünməsi.

Burada MVC modelinə daha ətraflı yanaşmağa başlayırıq.

Bu model vebsaytın hazırlanmasında iştirak edən bütün faylların bölünməsini nəzərdə tutur üç qrup:

1. "Model" qrupunun faylları
2. "Nəzarətçi" qrupunun faylları
3. "Görünüş" qrupunun faylları

Burada MVC sxeminin adının konvensiya olduğunu dərhal başa düşmək vacibdir. Tətbiqinizdə, əlbəttə ki, çoxlu modellər, kontrollerlər və görünüşlər ola bilər (yəni yerinə yetirdikləri funksiyalara və daxili strukturlarına görə bu qruplara daxil olan fayllar).

Beləliklə, baxaq MVC modelinin müqayisəli diaqramı və “klassik” inkişaf metodu.


Sol tərəfdə yuxarıda danışdığımızı dəqiq görürsünüz. Səhifənin yuxarı hissəsində verilənlər bazası üçün SQL sorğuları var. Sonra işarələmə və PHP əlavələri.

Sağda MVC modelinin ən sadə diaqramı var. Bu sxem çərçivəsində modeldə verilənlər bazası ilə qarşılıqlı əlaqə ilə bağlı əməliyyatlar baş verir: məlumatların alınması, dəyişdirilməsi və silinməsi, müəyyən cədvəllərdə qeydlərin sayının hesablanması və s.

Nəzarətçi proqram məntiqini ehtiva edir, yəni. onun funksionallığını müəyyən edən.

Görünüşün son istifadəçiyə göstərilməsi nəzərdə tutulub.

Diaqramdakı iki istiqamətli oxlar "Model - Nəzarətçi" və "Nəzarətçi - Görünüş" cütlərində əlaqənin olduğunu göstərir. Nümunə olaraq aşağıdakı diaqramdan istifadə edərək bu əlaqəni daha ətraflı nəzərdən keçirək.


Bu diaqramda biz iki yeni element əlavə etdik: istifadəçinin brauzeri və verilənlər bazası. Bütün dövrəyə ümumi şəkildə baxaq: brauzerdən müəyyən bir URL-ə daxil olan səhifə istifadəçiyə görünənə qədər:

1. İstifadəçi ünvanı daxil edir və brauzer nəzarətçi ilə əlaqə saxlayır.

2. Nəzarətçi modelə daxil olur.

3. Model verilənlər bazasına daxil olur (məsələn, çıxış üçün lazım olan məlumatları əldə etmək üçün)

4. Verilənlər bazasından alınan məlumatlar modelə qayıdır.

5. Məlumat modeldən nəzarətçiyə ötürülür.

6. Nəzarətçi bu məlumatı görünüşə ötürür.

7. Görünüş nəzarətçidən istifadə edərək brauzerdə göstərilir.

Bu modelin ümumi iş sxemi belədir. Gördüyünüz kimi, bu diaqramda brauzer və verilənlər bazası bir qədər ayrıca seçilir. Həqiqətən, brauzer yalnız nəzarətçiyə daxil ola bilər, çünki nəzarətçi url-nin bir hissəsidir. Ziyarətçi nəzarətçidən başqa heç nəyə daxil ola bilməz. Bunu başa düşmək vacibdir. Şəxs ünvan çubuğu vasitəsilə görünüşlərə və ya modellərə daxil ola bilməz. Yalnız nəzarətçi ilə qarşılıqlı əlaqə qurur.

Bu baxımdan bir növ “paylayıcı mərkəz” kimi nəzarətçi haqqında danışmaq olar. Özünüz baxın: nəzarətçi istifadəçi sorğularını emal edir, nəzarətçi modelə daxil olur və nəzarətçi brauzerdə görünüşü göstərmək üçün vasitəçidir.

Fərqli olan ikinci element verilənlər bazasıdır. Və doğrudur. MVC konsepsiyası çərçivəsində qəbul edilir ki Yalnız modellər verilənlər bazası ilə işləməlidir Lakin bəzən bu prinsip pozulur. Bu halda verilənlər bazası ilə qarşılıqlı əlaqə nəzarətçi və ya hətta görünüşdən həyata keçirilir.

Əlbəttə ki, çox uzağa getməməli və MVC-nin strukturunu və prinsiplərini pozmamalısınız, lakin bəzən qaydalardan belə bir kənarlaşma kodun oxunuşunu yaxşılaşdırmaq və tətbiqin iş sxemini başa düşmək baxımından çox faydalı ola bilər.

Model, yeri gəlmişkən, MVC sxemində isteğe bağlı elementdir. Modellərdən ümumiyyətlə istifadə etmədən sizə lazım olan hər şeyi həyata keçirmək olduqca mümkündür. Təbii ki, bu halda siz nəzarətçidən verilənlər bazası ilə qarşılıqlı əlaqədə olacaqsınız və fayllara baxacaqsınız. Artıq başa düşdüyünüz kimi, bu çox yaxşı forma deyil. Bu konsepsiya çərçivəsində işləmək qərarına gəldikdən sonra, modellərdən istifadə etmək və bunu məqsədlərinə uyğun etmək tövsiyə olunur.

"İfratlara" baxdıq, lakin diaqramın mərkəzində "Model - Nəzarətçi" və "Nəzarətçi - Görünüş" qarşılıqlı təsirlərinin yer aldığı üçlüyümüz qaldı.

Bu modelin necə işlədiyinin əsaslarını öyrəndikdən sonra bu yanaşmanın bizə nə verdiyini və nə üçün klassikdən daha üstün olduğunu düşünə bilərik.

İşinizdə belə bir sxemdən istifadə etməyin əsas faydası artıq qeyd edilmişdir - bu kodun və bütövlükdə tətbiqin strukturunun artırılması. MVC modelinin mənim sevimli CodeIgniter də daxil olmaqla bir çox çərçivə istehsalçıları tərəfindən qəbul edildiyi heç kimə sirr deyil.

Axı, çərçivə nədir? Xarici sözü atsaq, bu, sadəcə bir çərçivədir, müəyyən bir strukturdur, ona uyğun olaraq veb sayt hazırlamağınız xahiş olunur. Bu struktur onun köməyi ilə demək olar ki, istənilən veb-sayt yaratmaq üçün kifayət qədər universaldır. Eyni zamanda, çox vacib olan çərçivə də çox çevikdir, sizə tam olaraq ehtiyac duyduğunuza nail olmağa imkan verir.

Başqa sözlə, çərçivə sizi struktur baxımından məhdudlaşdıran, lakin funksionallıq baxımından sizi məhdudlaşdırmayan çevik çərçivədir.

MVC ilə bağlı suala qayıdaraq, bir çox çərçivələrin məhz bu yanaşmadan istifadə etdiyini görə bilərik: onlar kifayət qədər aydın proqram strukturu təqdim edir ki, bu da faylları növlərə, modellərə və nəzarətçilərə bölür. Bütün bunlar birlikdə MVC çərçivəsini və modelini necə istifadə edəcəyinizi öyrənməyə sərf etsəniz, sizə çox vaxt qənaət edə bilər.

MVC modelinin digər üstünlükləri daxildir kodun funksionallığına görə bölünməsi. Artıq SQL sorğularının, işarələmənin və PHP kodunun qarışıqlığını qazmağa ehtiyacınız olmayacaq. Bir şeyi düzəltmək və ya dəyişdirmək lazımdırsa, hansı faylı redaktə etməyiniz lazım olduğunu dəqiq biləcəksiniz.

Aşağıda "baxışlar" qrupuna aid olan faylın bir hissəsini görə bilərsiniz:


Və burada modeldən bir kod parçası:


Nəzarətçi belə görünə bilər:


Gördüyünüz kimi çox vacib bir üstünlükdür görünüşü koddan ayırır. Çox vaxt əvvəllər göstərilən səhifədə eyni məlumatları saxlamaqla saytın dizaynını və ya hətta strukturunu dəyişdirmək lazımdır. Və burada zaman keçdikcə getdikcə çətinləşən kod qarışıqlığını redaktə etməyə başlayır.

MVC modelinin üstünlüyü tam olaraq tam işləmə qabiliyyətindədir tətbiqin məntiqini dəyişdirərkən sayt dizaynını redaktə etməyi istisna edin. Siz üç elementdən hər hansı birini dəyişə bilərsiniz: Model, Görünüş, Nəzarətçi. Bu halda, digər elementlərə dəyişiklik etmək lazım deyil, çünki onlar müəyyən dərəcədə avtonomdurlar.

Muxtariyyət məsələsi modellər və növlər üçün xüsusilə aktualdır. Onları yazdıqdan sonra, adətən, minimal və ya heç bir redaktəsi olmayan müxtəlif layihələr üçün uğurla istifadə edə bilərsiniz. Bu, təkrar-təkrar oxşar kodu yazmaq məcburiyyətində qalmayaraq sizə çox vaxt qənaət edir.

Çərçivə daxilində MVC modelindən istifadənin üstünlükləri göz qabağındadır məsələn, eyni CodeIgniter.

Heç kimə sirr deyil ki, hər bir veb-saytda çoxlu sayda oxşar, hətta eyni funksiyalar var. Yalnız rəy formasını və ya səhifə naviqasiyasını xatırlayın. Bunlar yalnız ən təəccüblü, “xarici” məqamlardır. Siz adi istifadəçiyə görünməyən kodda, serverdə işləyən kodda daha çox oxşarlıq tapacaqsınız.

Demək olar ki, bütün veb tərtibatçıları oxşar PHP funksiyalarından istifadə etmək, oxşar verilənlər bazası sorğularını yerinə yetirmək və s. ehtiyacla üzləşirlər. Çərçivə istehsalçıları burada çox vacib bir iş gördülər - onlar veb ustalarına və veb proqramçılarına yeni imkanlar təqdim edərək, ən çox istifadə olunan funksiyaları ayrı-ayrı fayllarda qruplaşdırmağa çalışdılar.

İndi tez-tez ehtiyac duyulan şeyləri onların necə həyata keçiriləcəyi barədə çox düşünmədən edə bilərsiniz. Siz vaxtınıza qənaət edərək bir neçə onlarla sətir əvəzinə bir neçə sətir kod yaza bilərsiniz tətbiqin necə həyata keçiriləcəyindən daha çox onun necə işlədiyi məntiqinə diqqət yetirir.

Və bütün bunlar MVC konsepsiyası çərçivəsində baş verir və bu çərçivədən istifadə edərək demək olar ki, istənilən nəticəni əldə etməyə imkan verir. Eyni zamanda, siz kod oxunuşunun yüksək dərəcəsi əldə edirsiniz. Rahat və məhsuldar iş üçün başqa nə lazımdır?

Son söz: Unutmayın ki, müəyyən tapşırıqların yerinə yetirilməsini asanlaşdırmaq üçün yaradılan hər hansı bir struktur sadəcə işi asanlaşdırmaq üçün yaradılmışdır.

MVC prinsipinə onun tətbiq strukturunu başa düşməyinizə pis təsir etdiyinə əmin olduğunuz hallarda riayət etməməlisiniz. Modelin altında "əyilməli" olan siz deyil, altındakı modeldir.

Dmitri Naumenko

P.S. Hansı PHP çərçivəsini mənimsəmək barədə düşünürsünüz? CakePHP-ə diqqət yetirin - o, yuxarıda müzakirə olunan MVC nümunəsini həyata keçirir və bu çərçivənin imkanları haqqında ümumi fikir əldə etmək üçün hazırda qısa bir giriş video kursu əldə edə bilərsiniz:

Materialı bəyəndiniz və mənə təşəkkür etmək istəyirsiniz?
Sadəcə dostlarınız və həmkarlarınızla paylaşın!


Fikrimcə, layihənin ən yaxşı genişlənməsini təmin etmək üçün sadəcə proqramçı deyil, hər bir tərtibatçı MVC bilməlidir.

MVC təkcə proqram arxitekturası deyil, həm də inkişaf konsepsiyasıdır. Mən demirəm ki, bu məqalə sizə MVC-nin bütün sirlərini izah edəcək, lakin siz mütləq ilkin anlayışı əldə edə bilərsiniz. Və sonra http://pogugli.com/?74600

MVC (Model-View-Controller) konsepsiyası son illərdə veb proqramlaşdırma dünyasında çox tez-tez xatırlanır. Veb proqramlarının inkişafı ilə hər hansı bir şəkildə əlaqəli olan hər kəs bu və ya digər şəkildə bu abbreviatura ilə qarşılaşmışdır. Bu gün biz MVC konsepsiyasının nə olduğunu və niyə populyarlaşdığını anlayacağıq.

Qədim tarix

MVC layihə nümunəsi deyil, tətbiqimizin strukturunun necə qurulacağını, bu strukturdakı hissələrin hər birinin məsuliyyətlərini və qarşılıqlı əlaqəsini təsvir edən dizayn nümunəsidir.

İlk dəfə 1979-cu ildə təsvir edilmişdir, əlbəttə ki, fərqli bir mühit üçün. O vaxtlar veb proqram anlayışı yox idi. Tim Berners Li 90-cı illərin əvvəllərində Ümumdünya Şəbəkəsinin (WWW) toxumlarını səpdi və dünyanı əbədi olaraq dəyişdirdi. Bu gün istifadə etdiyimiz şablon veb inkişafı üçün orijinal şablonun uyğunlaşdırılmasıdır.

Bu strukturun veb proqramlardakı vəhşi populyarlığı onun çox populyarlaşan iki inkişaf mühitinə daxil olması ilə əlaqədar idi: Struts və Ruby on Rails. Bu iki inkişaf mühiti sonradan yaradılan yüzlərlə inkişaf mühiti üçün yol təyin edir.

Veb proqramları üçün MVC

MVC dizayn nümunəsinin arxasında duran fikir çox sadədir: biz tətbiqlərimizdə müxtəlif funksiyalar üçün məsuliyyətləri aydın şəkildə ayırmalıyıq:

Tətbiq hər biri müxtəlif vəzifələrə cavabdeh olan üç əsas komponentə bölünür. Bir nümunədən istifadə edərək komponentləri ətraflı nəzərdən keçirək.

Nəzarətçi

Nəzarətçi istifadəçi sorğularını idarə edir (istifadəçi müxtəlif hərəkətləri yerinə yetirmək üçün interfeys elementlərinə kliklədikdə HTTP GET və ya POST sorğuları kimi qəbul edilir). Onun əsas funksiyası istifadəçi tərəfindən müəyyən edilmiş hərəkətləri yerinə yetirmək üçün lazım olan zəruri resursların və obyektlərin hərəkətini çağırmaq və əlaqələndirməkdir. Tipik olaraq, nəzarətçi tapşırıq üçün uyğun modeli çağırır və uyğun görünüşü seçir.

Model

Model, tətbiqin necə idarə olunması konsepsiyasını təmsil edən verilənlər üzərində işləmək üçün istifadə olunan verilənlər və qaydalardır. İstənilən tətbiqdə bütün struktur müəyyən bir şəkildə işlənən verilənlər kimi modelləşdirilir. Tətbiq üçün istifadəçi nədir - mesaj və ya kitab? Yalnız qaydalara uyğun işlənməli olan məlumatlar (tarix gələcəyə işarə edə bilməz, e-poçt müəyyən formatda olmalıdır, ad X simvoldan uzun ola bilməz və s.).

Model nəzarətçiyə istifadəçinin tələb etdiyi məlumatların təqdimatını verir (mesaj, kitab səhifəsi, foto albom və s.). Məlumat modeli istifadəçiyə necə təqdim etmək istəsək də, eyni olacaq. Buna görə də, məlumatları göstərmək üçün hər hansı mövcud görünüşü seçirik.

Model bizim tətbiqimizin məntiqinin ən vacib hissəsini, qarşılaşdığımız problemi həll edən məntiqi (forum, mağaza, bank və s.) ehtiva edir. Nəzarətçi əsasən proqramın özü üçün təşkilati məntiqi ehtiva edir (ev işləri kimi).

Baxın

Görünüş, modeldən əldə edilən məlumatları təmsil etməyin müxtəlif yollarını təmin edir. Məlumatlarla dolu bir şablon ola bilər. Bir neçə müxtəlif növ ola bilər və nəzarətçi hansının cari vəziyyətə ən uyğun olduğunu seçir.

Veb tətbiqi adətən nəzarətçilər, modellər və görünüşlər dəstindən ibarətdir. Nəzarətçi bütün sorğuları qəbul edən və vəziyyətdən asılı olaraq hərəkətləri yerinə yetirmək üçün digər nəzarətçiləri çağıran əsas nəzarətçi kimi dizayn edilə bilər.

Bir nümunəyə baxaq

Deyək ki, onlayn kitab mağazası inkişaf etdirməliyik. İstifadəçi aşağıdakı hərəkətləri edə bilər: kitablara baxmaq, qeydiyyatdan keçmək, almaq, cari sifarişə elementlər əlavə etmək, kitab yaratmaq və ya silmək (əgər o, idarəçidirsə). Gəlin görək istifadəçi kateqoriyaya kliklədikdə nə baş verir fantaziya mağazamızda mövcud olan kitabların adlarına baxmaq üçün.

Kitablarla əlaqəli bütün hərəkətləri (baxmaq, redaktə etmək, yaratmaq və s.) idarə etmək üçün xüsusi nəzarətçimiz var. Gəlin onu çağıraq books_controller.php bizim nümunəmizdə. Bizə də belə bir model lazımdır book_model.php, mağaza elementi ilə əlaqəli məlumatları və məntiqi emal edən. Nəticə olaraq, məlumatları təmsil etmək üçün bizə bir neçə baxış lazımdır, məsələn, kitab siyahısı, redaktə səhifəsi və s.

Aşağıdakı şəkildə istifadəçinin mövzu üzrə kitabların siyahısına baxmaq sorğusunun necə işləndiyi göstərilir fantaziya:

Nəzarətçi (books_controller.php) istifadəçi sorğusunu (HTTP GET və ya POST sorğusu) qəbul edir. Biz mərkəzi nəzarətçi yarada bilərik, məsələn, sorğunu qəbul edən və books_controller.php çağıran index.php.

Nəzarətçi sorğu və parametrləri yoxlayır və sonra modeli çağırır(book_model.php), soruşmaq mövzu ilə bağlı mövcud kitabların siyahısı var fantaziya.

Model verilənlər bazasından (və ya məlumatı saxlayan başqa mənbədən) məlumatları qəbul edir, filtrləri və lazımi məntiqi tətbiq edir və sonra kitabların siyahısını təmsil edən məlumatları qaytarır.

Nəzarətçi məlumatı istifadəçiyə təqdim etmək üçün müvafiq görünüşdən istifadə edir. Əgər sorğu mobil telefondan gəlirsə, mobil telefonun görünüşündən istifadə edilir; əgər istifadəçi müəyyən interfeys dizaynından istifadə edirsə, onda müvafiq görünüş seçilir və s.

Üstünlükləri nələrdir?

MVC konsepsiyasından istifadə etməklə əldə etdiyimiz ən bariz fayda təqdimat məntiqi (istifadəçi interfeysi) və tətbiq məntiqinin aydın şəkildə ayrılmasıdır.

Müxtəlif növ cihazlardan istifadə edən müxtəlif növ istifadəçiləri dəstəkləmək bu günlərdə ümumi problemdir. Əgər sorğu fərdi kompüterdən və ya mobil telefondan gəlirsə, təqdim olunan interfeys fərqli olmalıdır. Model eyni məlumatları qaytarır, yeganə fərq, nəzarətçinin məlumatları çıxarmaq üçün müxtəlif görünüşləri seçməsidir.

Tətbiq məntiqindən baxışları təcrid etməklə yanaşı, MVC konsepsiyası böyük tətbiqlərin mürəkkəbliyini əhəmiyyətli dərəcədə azaldır. Kod daha strukturlaşdırılmışdır və həllərin saxlanmasını, sınaqdan keçirilməsini və təkrar istifadəsini asanlaşdırır.

İş mühitindən niyə istifadə olunur?

Workbench-dən istifadə etdiyiniz zaman əsas MVC strukturu artıq hazırlanır və sizə lazım olan tək şey fayllarınızı MVC nümunəsinə uyğunlaşdırmaq üçün müvafiq qovluqlara yerləşdirməklə strukturu genişləndirməkdir. Üstəlik, siz artıq yazılmış və yaxşı sınaqdan keçirilmiş bir sıra funksiyalara sahib olacaqsınız.

MVC iş masasına misal olaraq cakePHP-ə baxaq. Quraşdırıldıqdan sonra üç əsas kataloqunuz olacaq:

  • tort/
  • satıcılar/

Qovluq proqram fayllarınızın yerləşdiyi yerdir. Bu, tətbiqinizin bir hissəsini inkişaf etdirmək üçün yerdir.

Qovluqda tort cakePHP fayllarına sahibdir (iş masası funksionallığı).

Qovluq satıcılar üçüncü tərəf PHP kitabxanalarını saxlamaq üçün istifadə olunur.

İş yeriniz (tətbiq kataloqu) aşağıdakı quruluşa malikdir:

  • proqram/
    • konfiqurasiya/
    • nəzarətçilər/
    • yerli/
    • modellər/
    • plaginlər/
    • testlər/
    • satıcılar/
    • baxış/
    • webroot/

Kontrollerlərinizi kontrollerlər qovluğuna, modellərinizi modellər kataloquna, baxışlarınızı isə görünüşlər kataloquna yerləşdirməlisiniz!

İstehsal mühitindən istifadə etməyə başladıqdan sonra tətbiqinizin yaradılması və ya dəyişdirilməsi lazım olan demək olar ki, hər bir hissəsinin harada olduğu dərhal aydın olacaq. Bu təşkilat özlüyündə proqramın hazırlanması və saxlanması prosesini xeyli asanlaşdırır.

Nümunəmiz üçün iş dəzgahından istifadə edin

Bu dərslik cakePHP-dən istifadə edərək proqram yaratmaq prosesini göstərmək üçün nəzərdə tutulmadığından, biz yalnız modelin kodunu, nəzarətçini və MVC iş dəzgahından istifadənin üstünlükləri ilə bağlı şərhləri göstərəcəyik. Kod qəsdən sadələşdirilib və real tətbiqdə istifadə üçün yararsızdır.

Unutmayın, biz kitab mağazasına və mövzu ilə bağlı kitabların tam siyahısını görmək istəyən maraqlı istifadəçiyə baxırdıq. fantaziya. Nəzarətçi istifadəçinin müraciətini qəbul etdi və lazımi hərəkətləri əlaqələndirdi.

Beləliklə, istifadəçi düyməni klikləyən kimi brauzer verilmiş url-i tələb edir:

1 www.ourstore.com/books/list/fantasy

CakePHP şablondan istifadə edərək URL-ni formatlayır /nəzarətçi/fəaliyyət/param1/param2, Harada hərəkət nəzarətçi tərəfindən çağırılan funksiyadır. Köhnə klassik formada url belə görünəcək:

1 www.ourstore.com/books_controller.php?action=list&category=fantasy

Nəzarətçi

CakePHP iş mühitində nəzarətçimiz belə görünəcək:

1
class BooksController AppController-i genişləndirir (

funksiya siyahısı ($kateqoriya) (

$this ->set("kitablar" , $this ->Kitab->findAllByCategory($kateqoriya));

}

funksiya add() ( ... ... )

funksiyanı sil () ( ... ... )

... ... } ?>

Sadə, elə deyilmi? Bu nəzarətçi kimi yadda saxlanılacaq books_controller.php və yerləşdirildi /app/controlers. O, nümunəmiz üçün hərəkətləri yerinə yetirən funksiyaların siyahısını, həmçinin kitabla əlaqəli əməliyyatları yerinə yetirmək üçün digər funksiyaları (yeni kitab əlavə etmək, kitabı silmək və s.) ehtiva edir.

İş mühiti bizə bir çox hazır həllər təqdim edir və bizə yalnız kitabların siyahısını yaratmaq lazımdır. Nəzarətçinin əsas funksionallığını artıq müəyyən edən baza sinifi var, ona görə də bu sinfin xassələrini və funksiyalarını miras almalısınız ( AppController varisidir Nəzarətçi).

Fəaliyyət siyahısında etməli olduğunuz yeganə şey məlumatları əldə etmək üçün modeli çağırmaq və sonra onu istifadəçiyə təqdim etmək üçün görünüş seçməkdir. Bunun necə edildiyi budur.

bu -> Kitab- bu bizim modelimiz və kodun bir hissəsidir:

1 $this ->Kitab->findAllByCategory($kateqoriya)

modelə seçilmiş mövzu üzrə kitabların siyahısını qaytarmağı əmr edir (modelə daha sonra baxacağıq).

Metod təyin edin xətdə:

1 $this ->set("kitablar" , $this ->Kitab->findAllByCategory($kateqoriya));

Nəzarətçi məlumatları görüntüyə ötürür. Dəyişən Kitablar model tərəfindən qaytarılan məlumatları qəbul edir və onu görünüş üçün əlçatan edir.

İndi yalnız görünüşü göstərmək qalır, lakin biz standart görünüşdən istifadə etsək, bu funksiya cakePHP-də avtomatik olaraq yerinə yetirilir. Fərqli bir növü istifadə etmək istəyiriksə, metodu açıq şəkildə çağırmalıyıq göstərmək.

Model

Model daha sadədir:

1
sinif Kitabı AppModel-i genişləndirir (

}

?>

Niyə boşdur? Çünki o, tələb olunan funksionallığı təmin edən əsas sinifdən miras alır və icra müddətinin bütün digər tapşırıqları avtomatik idarə etməsi üçün CakePHP-nin adlandırma konvensiyasından istifadə etməliyik. Məsələn, cakePHP adı əsasında bu modelin istifadə olunduğunu bilir Kitab Nəzarətçisi və kitablar adlı verilənlər bazası cədvəlinə çıxışı var.

Bu təriflə verilənlər bazasında yalnız məlumatları oxuya, silə və ya saxlaya bilən bir modelimiz olacaq.

Kodu qeyd edin book.php qovluğunda /app/modellər.

Baxın

İndi etməmiz lazım olan tək şey hərəkətlər siyahısı üçün bir görünüş (ən azı bir) yaratmaqdır. Görünüşdə HTML kodu və modelin təqdim etdiyi kitablar massivində dolaşmaq üçün bir neçə (mümkün qədər az) PHP kodu sətirləri olacaq.

1














ad Müəllif Qiymət

Göründüyü kimi, görünüş tam səhifə yaratmır, ancaq HTML-nin bir fraqmentini (bu halda cədvəl) yaradır. Çünki CakePHP səhifə şablonunu müəyyən etmək üçün başqa üsul təqdim edir və görünüş həmin şablona daxil edilir. Workbench həmçinin HTML səhifəsinin hissələrini yaratarkən (formalar, keçidlər, Ajax və ya JavaScript daxil etmək) ümumi tapşırıqları yerinə yetirmək üçün bizə bəzi köməkçi obyektlər təqdim edir.

Görünüşü olaraq qeyd edin list.ctp(siyahı fəaliyyətin adıdır və ctp CakePHP şablonu deməkdir) qovluqda /app/views/books(çünki bu, nəzarətçi hərəkəti üçün görünüşdür).

CakePHP tezgahından istifadə edərək hər üç komponent belə yerinə yetirilir!

Bu yazıda biz MVC anlayışını başa düşəcəyik və bir nümunədən istifadə edərək onu PHP-də necə tətbiq edə bilərik.

MVC Konsepsiyası

MVC(Model-görünüş-nəzarətçi, " Model-Baxış-Davranış», « Model-View-Controller") idarəetmə məntiqinin üç ayrı komponentə bölündüyü proqram dizayn nümunəsidir ki, onlardan birinin dəyişdirilməsi digərlərinə minimal təsir göstərir.

MVC şablonundan PHP proqramçısının (və ya bir qrup proqramçının şöbələrə bölünməsi), dizaynerin, tərtibatçının və s. işlərini ayırmaq lazım olan mürəkkəb layihələr yaratarkən istifadə etmək yaxşıdır.

MVC nümunəsi təqdimat, məlumat və istifadəçi qarşılıqlı əlaqəsini üç ayrı komponentə ayırır:

MVC modeli(Model). Model məlumat verir (adətən Görünüşə) və həmçinin vəziyyətini dəyişdirərək sorğulara (adətən Nəzarətçidən) cavab verir.

MVC Görünüşü(Bax). Məlumatın göstərilməsinə cavabdehdir (istifadəçi interfeysi).

MVC Davranışı(Nəzarətçi). İstifadəçi daxiletməsini şərh edir və buna uyğun cavab vermək üçün modeli və görünüşü məlumatlandırır.

MVC şablonunun fəaliyyət diaqramını aydınlaşdırmaq üçün aşağıda təsvir verilmişdir.

Təqdimat və davranış kimi komponentlər modeldən asılıdır, lakin ona heç bir şəkildə təsir göstərmir. Modelin bir neçə baxışı ola bilər. MVC anlayışını başa düşmək çətin ola bilər, lakin siz onu başa düşdükdən sonra PHP-də proqramlar hazırlayarkən əvəzolunmaz olur.

PHP-də MVC

PHP-də MVC-dən istifadə edərkən xüsusi bir xüsusiyyət, PHP tətbiqinə bir giriş nöqtəsinin olmasıdır, məsələn, aşağıdakı kimi əldə edilir. Bütün sorğuların işlənəcəyi index.php yaradılır. Bunun üçün indeksi olan qovluqda .htaccess faylı yaradın və ora aşağıdakı kodu yerləşdirin:

RewriteCond %(REQUEST_FILENAME) üzərində RewriteEngine !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule ^(.*)$ index.php?route=$1

Təqdim olunan kodda birinci sətir tələb olunan faylın mövcudluğunu yoxlayır və əgər o yoxdursa, o zaman index.php-ə yönləndirilir, əks halda hətta sayt şəkilləri üçün sorğular indeksə yönləndiriləcək. Kodun son sətri index.php?route=chat/index kimi sorğuları index.php/chat/index-ə çevirir. Tətbiqinizdə ModRewrite-dən istifadə etmək imkanınız yoxdursa, yönləndirməni əl ilə etməli olacaqsınız.

PHP modeli

PHP modeli haqqında məlumatlar onun atributlarında var və yalnız xüsusi funksiyalar vasitəsilə dəyişdirilə bilər. Model bir neçə baxışdan ibarət ola bilər. Bir qayda olaraq, phpmodel verilənlər bazası ilə işləyən sinifdir, daha dəqiq desək: yazmaq, oxumaq, silmək. Təbii ki, verilənlər bazasından məlumatların oxunması bir neçə baxış (funksiya) ilə həyata keçirilə bilər. Nümunə olaraq veb-saytdakı məqalələr modeli: verilənlər bazasından konkret məqalə əldə edə bilərsiniz, ən son, populyar, bəzi kateqoriyaların siyahısı... bunlar hamısı modelin təsvirləridir. Aydınlıq üçün aşağıda php modelinin nümunəsi verilmişdir.

PHP nəzarətçisi (Davranış)

PHP kontrollerləri index.php vasitəsilə göndərdiyimiz istifadəçi sorğularını alır və onlara uyğun olaraq modelin işini tənzimləyir. PHP tətbiqinin işinə onların nəzarət etdiyini söyləmək daha düzgün olardı.

PHP Nümayəndəliyi

Görünüş modeldəki dəyişiklikləri izləyir və php tətbiqinin interfeysini yaradır və ya dəyişir.

Məlumatların Siyahısı

ad ?>

soyadı?>

Bu necə işləyir?PHPMVC şablonu?

İstifadəçi tələb olunan url-ə daxil olduqda, görünüşə və modelə daxil olan uyğun nəzarətçi seçilir və məlumat göstərilir. Başqa sözlə desək, mvc-dəki nəzarətçi model və görünüş arasında birləşdirici əlaqədir.

PHP tətbiqi yaratarkən MVC şablonunun üstünlükləri

Yuxarıda qeyd edildiyi kimi, bu, ilk növbədə, PHP sayt tərtibatçılarının şöbələrə bölünməsidir. Böyük bir layihə yaradılarsa, PHP tətbiqinin sürəti də artır. PHP tərtibatçısını birbaşa maraqlandıran PHP kodunun düzgün strukturlaşdırılmasıdır (hər şey öz yerindədir, ona görə də başa düşmək daha asandır).

MVC nümunəsi

MVC-nin necə işlədiyinə dair nümunə üzərində çox dayanmayacağıq, çünki bizdə bir var, daha dərindən başa düşmək üçün bir neçə daha diaqram əlavə edəcəyəm.

MVC şablonunun PHP-də necə işlədiyinə dair başqa bir sxem, onu başa düşmək asan deyil.

MVC (Model-View-Controller) konsepsiyası son illərdə veb proqramlaşdırma dünyasında çox tez-tez xatırlanır. Veb proqramlarının inkişafı ilə hər hansı bir şəkildə əlaqəli olan hər kəs bu və ya digər şəkildə bu abbreviatura ilə qarşılaşmışdır. Bu gün biz MVC konsepsiyasının nə olduğunu və niyə populyarlaşdığını anlayacağıq.

Qədim tarix

MVC layihə nümunəsi deyil, tətbiqimizin strukturunun necə qurulacağını, bu strukturdakı hissələrin hər birinin məsuliyyətlərini və qarşılıqlı əlaqəsini təsvir edən dizayn nümunəsidir.

İlk dəfə 1979-cu ildə təsvir edilmişdir, əlbəttə ki, fərqli bir mühit üçün. O vaxtlar veb proqram anlayışı yox idi. Tim Berners Li 90-cı illərin əvvəllərində Ümumdünya Şəbəkəsinin (WWW) toxumlarını səpdi və dünyanı əbədi olaraq dəyişdirdi. Bu gün istifadə etdiyimiz şablon veb inkişafı üçün orijinal şablonun uyğunlaşdırılmasıdır.

Bu strukturun veb proqramlardakı vəhşi populyarlığı onun çox populyarlaşan iki inkişaf mühitinə daxil olması ilə əlaqədar idi: Struts və Ruby on Rails. Bu iki inkişaf mühiti sonradan yaradılan yüzlərlə inkişaf mühiti üçün yol təyin edir.

Veb proqramları üçün MVC

MVC dizayn nümunəsinin arxasında duran fikir çox sadədir: biz tətbiqlərimizdə müxtəlif funksiyalar üçün məsuliyyətləri aydın şəkildə ayırmalıyıq:

Tətbiq hər biri müxtəlif vəzifələrə cavabdeh olan üç əsas komponentə bölünür. Bir nümunədən istifadə edərək komponentləri ətraflı nəzərdən keçirək.

Nəzarətçi

Nəzarətçi istifadəçi sorğularını idarə edir (istifadəçi müxtəlif hərəkətləri yerinə yetirmək üçün interfeys elementlərinə kliklədikdə HTTP GET və ya POST sorğuları kimi qəbul edilir). Onun əsas funksiyası istifadəçi tərəfindən müəyyən edilmiş hərəkətləri yerinə yetirmək üçün lazım olan zəruri resursların və obyektlərin hərəkətini çağırmaq və əlaqələndirməkdir. Tipik olaraq, nəzarətçi tapşırıq üçün uyğun modeli çağırır və uyğun görünüşü seçir.

Model

Model- Bunlar proqramın idarə edilməsi konsepsiyasını təmsil edən verilənlərlə işləmək üçün istifadə olunan verilənlər və qaydalardır. İstənilən tətbiqdə bütün struktur müəyyən bir şəkildə işlənən verilənlər kimi modelləşdirilir. Tətbiq üçün istifadəçi nədir - mesaj və ya kitab? Yalnız qaydalara uyğun işlənməli olan məlumatlar (tarix gələcəyə işarə edə bilməz, e-poçt müəyyən formatda olmalıdır, ad X simvoldan uzun ola bilməz və s.).

Model nəzarətçiyə istifadəçinin tələb etdiyi məlumatların təqdimatını verir (mesaj, kitab səhifəsi, foto albom və s.). Məlumat modeli istifadəçiyə necə təqdim etmək istəsək də, eyni olacaq. Buna görə də, məlumatları göstərmək üçün hər hansı mövcud görünüşü seçirik.

Model bizim tətbiqimizin məntiqinin ən vacib hissəsini, qarşılaşdığımız problemi həll edən məntiqi (forum, mağaza, bank və s.) ehtiva edir. Nəzarətçi əsasən proqramın özü üçün təşkilati məntiqi ehtiva edir (ev işləri kimi).

Baxın

Baxın modeldən əldə edilən məlumatları təmsil etməyin müxtəlif yollarını təmin edir. Məlumatlarla dolu bir şablon ola bilər. Bir neçə müxtəlif növ ola bilər və nəzarətçi hansının cari vəziyyətə ən uyğun olduğunu seçir.

Veb tətbiqi adətən nəzarətçilər, modellər və görünüşlər dəstindən ibarətdir. Nəzarətçi bütün sorğuları qəbul edən və vəziyyətdən asılı olaraq hərəkətləri yerinə yetirmək üçün digər nəzarətçiləri çağıran əsas nəzarətçi kimi dizayn edilə bilər.

Bir nümunəyə baxaq

Deyək ki, onlayn kitab mağazası inkişaf etdirməliyik. İstifadəçi aşağıdakı hərəkətləri edə bilər: kitablara baxmaq, qeydiyyatdan keçmək, almaq, cari sifarişə elementlər əlavə etmək, kitab yaratmaq və ya silmək (əgər o, idarəçidirsə). Gəlin görək istifadəçi kateqoriyaya kliklədikdə nə baş verir fantaziya mağazamızda mövcud olan kitabların adlarına baxmaq üçün.

Kitablarla əlaqəli bütün hərəkətləri (baxmaq, redaktə etmək, yaratmaq və s.) idarə etmək üçün xüsusi nəzarətçimiz var. Gəlin onu çağıraq books_controller.php bizim nümunəmizdə. Bizə də belə bir model lazımdır book_model.php, mağaza elementi ilə əlaqəli məlumatları və məntiqi emal edən. Nəticə olaraq, məlumatları təmsil etmək üçün bizə bir neçə baxış lazımdır, məsələn, kitab siyahısı, redaktə səhifəsi və s.

Aşağıdakı şəkildə istifadəçinin mövzu üzrə kitabların siyahısına baxmaq sorğusunun necə işləndiyi göstərilir fantaziya:

Nəzarətçi (books_controller.php) istifadəçi sorğusunu (HTTP GET və ya POST sorğusu) qəbul edir. Biz mərkəzi nəzarətçi yarada bilərik, məsələn, sorğunu qəbul edən və books_controller.php çağıran index.php.

Nəzarətçi sorğu və parametrləri yoxlayır və sonra modeli çağırır(book_model.php), soruşmaq mövzu ilə bağlı mövcud kitabların siyahısı var fantaziya .

Model verilənlər bazasından (və ya məlumatı saxlayan başqa mənbədən) məlumatları qəbul edir, filtrləri və lazımi məntiqi tətbiq edir və sonra kitabların siyahısını təmsil edən məlumatları qaytarır.

Nəzarətçi məlumatı istifadəçiyə təqdim etmək üçün müvafiq görünüşdən istifadə edir. Əgər sorğu mobil telefondan gəlirsə, mobil telefonun görünüşündən istifadə edilir; əgər istifadəçi müəyyən interfeys dizaynından istifadə edirsə, onda müvafiq görünüş seçilir və s.

Üstünlükləri nələrdir?

MVC konsepsiyasından istifadə etməklə əldə etdiyimiz ən bariz fayda təqdimat məntiqi (istifadəçi interfeysi) və tətbiq məntiqinin aydın şəkildə ayrılmasıdır.

Müxtəlif növ cihazlardan istifadə edən müxtəlif növ istifadəçiləri dəstəkləmək bu günlərdə ümumi problemdir. Əgər sorğu fərdi kompüterdən və ya mobil telefondan gəlirsə, təqdim olunan interfeys fərqli olmalıdır. Model eyni məlumatları qaytarır, yeganə fərq, nəzarətçinin məlumatları çıxarmaq üçün müxtəlif görünüşləri seçməsidir.

Tətbiq məntiqindən baxışları təcrid etməklə yanaşı, MVC konsepsiyası böyük tətbiqlərin mürəkkəbliyini əhəmiyyətli dərəcədə azaldır. Kod daha strukturlaşdırılmışdır və həllərin saxlanmasını, sınaqdan keçirilməsini və təkrar istifadəsini asanlaşdırır.

İş mühitindən niyə istifadə olunur?

Workbench-dən istifadə etdiyiniz zaman əsas MVC strukturu artıq hazırlanır və sizə lazım olan tək şey fayllarınızı MVC nümunəsinə uyğunlaşdırmaq üçün müvafiq qovluqlara yerləşdirməklə strukturu genişləndirməkdir. Üstəlik, siz artıq yazılmış və yaxşı sınaqdan keçirilmiş bir sıra funksiyalara sahib olacaqsınız.

MVC iş masasına misal olaraq cakePHP-ə baxaq. Quraşdırıldıqdan sonra üç əsas kataloqunuz olacaq:

  • tort/
  • satıcılar/

Qovluq proqram fayllarınızın yerləşdiyi yerdir. Bu, tətbiqinizin bir hissəsini inkişaf etdirmək üçün yerdir.

Qovluqda tort cakePHP faylları (workbench funksionallığı) yerləşdirilir.

Qovluq satıcılarüçüncü tərəfin PHP kitabxanalarını saxlamağa xidmət edir.

İş yeriniz (tətbiq kataloqu) aşağıdakı quruluşa malikdir:

  • proqram/
    • konfiqurasiya/
    • nəzarətçilər/
    • yerli/
    • modellər/
    • plaginlər/
    • testlər/
    • satıcılar/
    • baxış/
    • webroot/

Kontrollerlərinizi kataloqa yerləşdirməlisiniz nəzarətçilər, kataloqdakı modellər modellər və kataloqdakı növlər baxışlar!

İstehsal mühitindən istifadə etməyə başladıqdan sonra tətbiqinizin yaradılması və ya dəyişdirilməsi lazım olan demək olar ki, hər bir hissəsinin harada olduğu dərhal aydın olacaq. Bu təşkilat özlüyündə proqramın hazırlanması və saxlanması prosesini xeyli asanlaşdırır.

Nümunəmiz üçün iş dəzgahından istifadə edin

Bu dərslik cakePHP-dən istifadə edərək proqram yaratmaq prosesini göstərmək üçün nəzərdə tutulmadığından, biz yalnız modelin kodunu, nəzarətçini və MVC iş dəzgahından istifadənin üstünlükləri ilə bağlı şərhləri göstərəcəyik. Kod qəsdən sadələşdirilib və real tətbiqdə istifadə üçün yararsızdır.

Unutmayın, biz kitab mağazasına və mövzu ilə bağlı kitabların tam siyahısını görmək istəyən maraqlı istifadəçiyə baxırdıq. fantaziya. Nəzarətçi istifadəçinin müraciətini qəbul etdi və lazımi hərəkətləri əlaqələndirdi.

Beləliklə, istifadəçi düyməni klikləyən kimi brauzer verilmiş url-i tələb edir:

www.ourstore.com/books/list/fantasy

CakePHP şablondan istifadə edərək URL-ni formatlayır /nəzarətçi/fəaliyyət/param1/param2, Harada hərəkət nəzarətçi tərəfindən çağırılan funksiyadır. Köhnə klassik formada url belə görünəcək:

www.ourstore.com/books_controller.php?action=list&category=fantasy

Nəzarətçi

CakePHP iş mühitində nəzarətçimiz belə görünəcək:

class BooksController AppController-i genişləndirir (

Funksiya siyahısı ($kateqoriya) (

$this->set("kitablar", $this->Kitab->findAllByCategory($kateqoriya));

Funksiya add() ( ... ... )

Sil () funksiyası ( ... ... )

... ... } ?>

Sadə, elə deyilmi? Bu nəzarətçi kimi yadda saxlanılacaq books_controller.php və yerləşdirildi /app/controlers. O, nümunəmiz üçün hərəkətləri yerinə yetirən funksiyaların siyahısını, həmçinin kitabla əlaqəli əməliyyatları yerinə yetirmək üçün digər funksiyaları (yeni kitab əlavə etmək, kitabı silmək və s.) ehtiva edir.

İş mühiti bizə bir çox hazır həllər təqdim edir və bizə yalnız kitabların siyahısını yaratmaq lazımdır. Nəzarətçinin əsas funksionallığını artıq müəyyən edən baza sinifi var, ona görə də bu sinfin xassələrini və funksiyalarını miras almalısınız ( AppController varisidir Nəzarətçi).

Fəaliyyət siyahısında sizə lazım olan yeganə şey məlumatları əldə etmək üçün modeli çağırmaq və sonra onu istifadəçiyə təqdim etmək üçün görünüş seçməkdir. Bunun necə edildiyi budur.

bu -> Kitab- bu bizim modelimiz və kodun bir hissəsidir:

$this->Kitab->findAllByCategory($kateqoriya)

modelə seçilmiş mövzu üzrə kitabların siyahısını qaytarmağı əmr edir (modelə daha sonra baxacağıq).

Metod təyin edin xətdə:

$this->set("kitablar", $this->Kitab->findAllByCategory($kateqoriya));

Nəzarətçi məlumatları görüntüyə ötürür. Dəyişən Kitablar model tərəfindən qaytarılan məlumatları qəbul edir və onu görünüş üçün əlçatan edir.

İndi yalnız görünüşü göstərmək qalır, lakin biz standart görünüşdən istifadə etsək, bu funksiya cakePHP-də avtomatik olaraq yerinə yetirilir. Fərqli bir növü istifadə etmək istəyiriksə, metodu açıq şəkildə çağırmalıyıq göstərmək.

Model

Model daha sadədir:

sinif Kitabı AppModel-i genişləndirir (

Niyə boşdur? Çünki o, tələb olunan funksionallığı təmin edən əsas sinifdən miras alır və icra müddətinin bütün digər tapşırıqları avtomatik idarə etməsi üçün CakePHP-nin adlandırma konvensiyasından istifadə etməliyik. Məsələn, cakePHP adı əsasında bu modelin istifadə olunduğunu bilir Kitab Nəzarətçisi və kitablar adlı verilənlər bazası cədvəlinə çıxışı var.

Bu təriflə verilənlər bazasında yalnız məlumatları oxuya, silə və ya saxlaya bilən bir modelimiz olacaq.

Kodu qeyd edin book.php qovluğunda /app/modellər.

Baxın

İndi etməmiz lazım olan tək şey hərəkətlər siyahısı üçün bir görünüş (ən azı bir) yaratmaqdır. Görünüşdə HTML kodu və modelin təqdim etdiyi kitablar massivində dolaşmaq üçün bir neçə (mümkün qədər az) PHP kodu sətirləri olacaq.












ad Müəllif Qiymət

Göründüyü kimi, görünüş tam səhifə yaratmır, ancaq HTML-nin bir fraqmentini (bu halda cədvəl) yaradır. Çünki CakePHP səhifə şablonunu müəyyən etmək üçün başqa üsul təqdim edir və görünüş həmin şablona daxil edilir. Workbench həmçinin HTML səhifəsinin hissələrini yaratarkən (formalar, keçidlər, Ajax və ya JavaScript daxil etmək) ümumi tapşırıqları yerinə yetirmək üçün bizə bəzi köməkçi obyektlər təqdim edir.

Görünüşü olaraq qeyd edin list.ctp(siyahı fəaliyyətin adıdır və ctp CakePHP şablonu deməkdir) qovluqda /app/views/books(çünki bu, nəzarətçi hərəkəti üçün görünüşdür).

CakePHP tezgahından istifadə edərək hər üç komponent belə yerinə yetirilir!

Yaxşı, birincisi, əlbəttə ki, bu, İnternetdə veb-saytların və proqramların hazırlanmasına bir model və ya başqa sözlə yanaşmadır, ikincisi, MVC inkişaf etdirilən sistemlərin səmərəliliyini artırmaq, həmçinin təhlükəsizliyi təmin etmək üçün istifadə olunur. və hakerliyə qarşı müqavimət.

MVC üçün dayanır Model-baxış-nəzarətçi və hərfi mənada kimi tərcümə edilə bilər Model-View-Controller.

İnkişaf modeli yeni görünməsinə baxmayaraq, o, çoxdan özünü sübut etdi və veb saytların, o cümlədən veb saytların inkişafında geniş istifadə olunur. MVC konsepsiyası ilk dəfə 1979-cu ildə Trygve Reenskaug tərəfindən təsvir edilmişdir.

MVC konsepsiyası və ya onun nədən ibarət olduğu

MVC modeli üç komponentdən ibarətdir: Model, Görünüş və Nəzarətçi.

Burada ən vacib şey, əlbəttə ki, Modeldir. Model verilənlərin emalı üçün prosedurlar və alqoritmlər toplusudur. Modelin özündə verilənlər yoxdur, lakin bir qayda olaraq, onu verilənlər bazasından götürür və əvvəlcədən müəyyən edilmiş alqoritmlərə uyğun emal edir. Veb inkişafı haqqında danışsaq, model bir sıra siniflər və funksiyaları ehtiva edəcək, məsələn, PHP-də.

İkinci element Görünüşdür. Məlumatı göstərməyə imkan verir. Bu veb saytdırsa, məlumat brauzerdə göstərilir. Veb saytları inkişaf etdirərkən, görünüşdə dəyişənlərin əvəz olunduğu, modeldən deyil, nəzarətçidən götürülən HTML kodu var.

Beləliklə, üçüncü element Nəzarətçidir. Onun əsas funksiyası istifadəçi ilə model arasında əlaqəni təmin etməkdir. PHP kodu da ola bilər.

Bir çox təcrübəsiz tərtibatçılar Modeldən istifadə etmirlər və ya ondan yalnız verilənlər bazasına daxil olmaq üçün istifadə edirlər ki, bu da böyük səhvdir, yanlışdır və MVC modelinin məntiqinə ziddir. Və bütün əsas kod Nəzarətçiyə yerləşdirilir. Bunun nəticələri, birincisi, böyük bir kod, ikincisi, daha aşağı tətbiq sürətidir. Yaxşı, bu cür tətbiqlərin kodunda dəyişiklik etmək daha çətindir.

Məsələn, bir xəbər saytı üçün MVC modelini nəzərdən keçirək

İstifadəçi veb-sayt səhifəsinə düşür. Ona xüsusi xəbərlər siyahısı olan standart səhifə göstərilir. Xəbər yaratmaq üçün məlumat bazadan götürülür.

İstifadəçi brauzerin ünvan sətrində konkret səhifəni yazdıqda sorğu nəzarətçiyə ötürülür və onu emal edən və Modeli yükləyən funksiya işə salınır.

Lazımi məlumatları qəbul edən, artıq işlənmiş və bir obyekt və ya massivdə qruplaşdırılmış model verilənlər bazasına sorğu yaradacaqdır. Model məlumatı aldıqdan sonra onu müəyyən formada formalaşdırır və Controller-ə ötürür, sonra isə View-ə ötürülür. Məlumat birbaşa Görünüşə ötürülsə, bu, xəta olmayacaq. Ancaq yenə də lazımsız hərəkətlərdən istifadə olunur ki, bu da son nəticədə saytın və proqramların yüklənməsinin daha uzun müddətinə gətirib çıxarır.

Görünüş, xəbərləri olan massiv və ya obyekt əldə edərək müəyyən HTML kodunu, lazım olduqda CSS-i yükləyir və javascript bütün bunları istifadəçiyə göstərir.

Bu model bir çox idarəetmə sistemləri və çərçivələrində istifadə olunur ki, onlardan biri də bu yaxınlarda yeni həyat qazanmış CodeIgniter-dir.

Beləliklə, MVC modelindən istifadə edərək vebsayt və ya İnternet tətbiqi üçün asanlıqla idarəetmə sistemi yarada bilərsiniz. Beləliklə, CodeIgniter çərçivəsi məhz bu modeldən istifadə edir.