logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

1.3. Sakupljamo naš PHP framework

26/05/2025, by Ivan

Postoji mnogo različitih pristupa za konstrukciju framework-a. Neki preferiraju veoma složene framework-e, dok drugi jednostavnije. U našim člancima ćemo brzo sastaviti jednostavan i lako razumljiv framework.

Naši članci će vam pomoći da razvijete svoj framework koji se razlikuje od onog koji nam treba za pravljenje internet prodavnice, a moći ćete lako dodavati nove delove framework-u za izgradnju nečeg većeg. Glavni cilj ovog ciklusa članaka je naučiti kako napraviti svoj sopstveni framework za bilo koji CMS.

Šabloni (Patterns)

Za razvoj framework-a koriste se različiti šabloni projektovanja aplikacija. Šablon je najbolje rešenje i praksa koja rešava opšte probleme u razvoju softvera. Među šablonima koje ćemo koristiti su:

  • Model-Pogled-Kontroler (MVC, Model-View-Controller)
  • Registar (Registry)
  • Jedinstvena klasa (Singleton)

Model-Pogled-Kontroler (MVC)

MVC je osnova našeg framework-a, pruža nam rešenje za razdvajanje korisničkog interfejsa i logike aplikacije. Korisnički interfejs (View) komunicira sa modelima podataka (Model) preko kontrolera (Controller), koji sadrži poslovnu logiku za upravljanje podacima u modelima.

Na primer, kada korisnik klikne na „Dodaj u korpu“ u Pogledu (View), kontroler obrađuje zahtev, komunicira sa modelom korpe i dodaje proizvod u korpu. Obično, podaci iz modela korpe se vraćaju nazad kontroleru, koji prikazuje novu korpu sa ažuriranim brojem proizvoda.

MVC

Koristićemo sopstveni framework i moći ćemo proširivati funkcionalnost na osnovu MVC. Kao što je ranije opisano, podaci su smešteni u modelima, a sami podaci se nalaze u bazi podataka. Međutim, modeli i tabele u bazi imaju isti format (polja u modelima se poklapaju sa poljima u tabelama). Dakle, možemo proširiti naš MVC dijagram. Takođe vidimo krajnji rezultat koji se prikazuje u Pogledu (View) u browseru, pa ćemo i to dodati u dijagram.

MVC scheme

Registar (Registry)

Registar omogućava skladištenje kolekcije objekata našeg framework-a. Potreba za Registrom proističe iz apstrakcije povezane sa MVC šablonom. Svaki kontroler i model (na primer proizvod, korpa, stranica) treba da obavlja zajedničke zadatke, uključujući:

  • Zahteve prema bazi podataka
  • Proveru da li je korisnik autorizovan za pristup informacijama
  • Slanje podataka u Pogled (upravljanje šablonima)
  • Slanje email-ova, na primer prilikom kupovine na sajtu
  • Interakciju sa fajl sistemom, na primer upload slika proizvoda

Većina sistema i framework-a obavlja ove funkcije u posebnim objektima, i mi ćemo praviti takve objekte. Registar omogućava da se ti objekti čuvaju zajedno. Registar može biti pozvan iz bilo kog dela framework-a i pruža pristup svojim funkcijama. Evo približnog dijagrama našeg Registra.

Registry

Framework direktno komunicira sa Registrom i kroz njega daje pristup ostalim objektima. Unutar Registra, objekti takođe mogu međusobno komunicirati, na primer menadžer šablona može biti povezan sa fajl menadžerom, a email pošiljalac sa email šablonima.

Jedinstvena klasa (Singleton)

Na našem jeziku je teško naći odgovarajući naziv za singleton, pa ćemo koristiti izraz Jedinstvena klasa, mada se u literaturi najčešće koristi engleski termin Singleton. Možda je bolje pisati na engleskom (što je i uobičajeno), ali ovde ćemo koristiti Jedinstvenu klasu.

Jedinstvena klasa je jedan od najjednostavnijih šablona za razumevanje. Njena osnovna namena je da garantuje postojanje samo jedne instance klase. Razlog za to je obično što je potreban samo jedan objekat klase koji treba da bude dostupan na svim mestima u aplikaciji, tj. globalni pristup.

Koristi se kada klasa ima samo jednu odgovornost, na primer za konfigurisanje konekcije ka bazi podataka, kako bi ostali objekti mogli da komuniciraju sa bazom.

Opšta struktura

Sledeći korak u razvoju framework-a je planiranje strukture. Treba da napravimo strukturu za:

  • Modele
  • Poglede (da bismo mogli da omogućimo menjanje stilova sajta u framework-u, tako da svaki stil ima svoj folder)
  • Kontrolere (da bismo mogli čuvati kontrolere u posebnim folderima, a kada dodamo novu funkcionalnost, samo dodati novi folder sa kontrolerom)
  • Admin kontroler (pravimo ne samo framework, već i CMS, pa treba omogućiti da moderator i admin unose informacije na sajt)
  • Registar
  • Objekte registra
  • Upload fajlove
  • Biblioteke trećih strana
  • Ostali kod

Uzimajući u obzir strukturu framework-a, folderi framework-a treba da budu (koristićemo engleske nazive foldera jer je to standard u PHP-u):

  • Models
  • Views
    • ViewA
    • Templates
    • Images
    • JavaScript
  • Controllers
    • ControllerA
      • ControllerA
      • ControllerAAdmin
  • Registry
    • Objects
    • Database objects
  • Assets
  • Uploads
    • Ova struktura će se proširiti kada dodamo proizvode i slike u framework!
  • Libraries
  • Miscellaneous