Professional Documents
Culture Documents
Dokumenta c i Ja
Dokumenta c i Ja
Beograd, 2023.
Sadrzaj
Uvod
Laravel
Istorijat
Prednosti korišćenja
1. Dependency Menadžment
2. Modularnost
3. Autentifikacija
4. Keširanje
5. Routing
6. Restful Controllers
7. Testiranje i uklanjanje grešaka
8. Template Engine
9. Database Query Builder - Builder upita ka bazi podataka
10. Eloquent ORM
11. File sistem
12. Bezbednost
13. Artisan
14. Migracioni sistem
15. Envoy
16. Lokalizacija
Migracije
Modeli
Kontroleri
Rute
Korisnicko uputstvo
Beograd, 2023.
Uvod
Laravel je open-source PHP okvir koji omogućava programerima da brzo i lako razvijaju
kompleksne veb aplikacije. Njegov nastanak datira iz 2011. godine, a od tada je postao izuzetno
popularan zbog svoje jednostavnosti, ekspresivnosti i bogatih funkcionalnosti. Laravel se
zasniva na MVC (Model-View-Controller) arhitekturi, koja pomaže u organizaciji koda i
odvajanju logike aplikacije od prezentacije.
Unutar seminarskog rada implementirana je serverska aplikacija koja za cilj ima prikazivanje
proizvoda (naziva, cene i slike), kao i dodavanje, ažuriranje i brisanje proizvoda. Ova aplikacija
pruža praktičan primer kako se koriste Laravel funkcionalnosti za upravljanje podacima. Laravel
Beograd, 2023.
nudi razne alate i koncepte koji olakšavaju ovakve operacije, kao što su Eloquent ORM,
migracije (migrations), rutiranje (routing), kontroleri (controllers) i poglede (views).
Laravel takođe ima bogatu ponudu paketa koji dodatno proširuju funkcionalnosti okvira. Tu su
paketi za autentifikaciju, autorizaciju, upravljanje sesijama, slanje mejlova i mnoge druge
funkcionalnosti koje su često potrebne u veb aplikacijama.
Laravel je moćan okvir koji omogućava programerima da efikasno upravljaju podacima u veb
aplikacijama. Sa svojim brojnim funkcionalnostima, jednostavnom sintaksom i zajednicom koja
stalno radi na unapređivanju okvira i pružanju podrške programerima, Laravel je postao
popularan izbor za razvoj modernih i skalabilnih veb aplikacija.
Beograd, 2023.
Laravel
Istorijat
Laravel je PHP okvir za razvoj veb aplikacija koji je prvi put objavljen 2011. godine. Njegov
tvorac, Taylor Otwell, želeo je napraviti okvir koji će biti jednostavan za upotrebu, ali
istovremeno pružiti napredne mogućnosti za razvoj aplikacija. Otwell je inspiraciju pronalazio u
drugim popularnim okvirima kao što su Ruby on Rails, ASP.NET MVC i Sinatra.
Od svog prvog izdanja, Laravel je stekao veliku popularnost među PHP programerima. Njegova
jednostavnost i ekspresivnost omogućavaju brzi razvoj veb aplikacija, dok bogat ekosistem
proširenja i alata olakšava razvojni proces. Takođe je poznat po čistoj i elegantnoj sintaksi, koja
olakšava čitanje i održavanje koda.
Jedna od glavnih karakteristika koja je postavila Laravel kao lidera među PHP okvirima je
Eloquent ORM. Eloquent pruža intuitivan način za rad sa bazom podataka kroz objektno-
orijentisani pristup. Programeri mogu koristiti modele za predstavljanje tabela u bazi podataka, a
Eloquent pruža bogat set metoda za izvršavanje upita, definisanje relacija i manipulaciju
podacima.
Pored Eloquent ORM-a, Laravel nudi mnoge druge funkcionalnosti. Na primer, Blade templating
sistem omogućava programerima da lako generišu HTML i koriste ponovno korišćenje delova
koda. Laravel takođe podržava rutiranje, koje omogućava definisanje ruta za različite HTTP
metode i njihovo mapiranje na odgovarajuće akcije u kontrolerima.
Još jedna moćna karakteristika Laravela je njegov koncept migracija. Migracije omogućavaju
programerima da održavaju šemu baze podataka kroz verzije aplikacije. Mogu se koristiti za
dodavanje, izmenu ili brisanje tabela i kolona, čime se olakšava upravljanje strukturom baze
podataka tokom vremena.
Laravel takođe ima bogat ekosistem proširenja koji dodatno proširuju njegove mogućnosti.
Paketi kao što su Laravel Socialite, Laravel Scout, Laravel Passport i mnogi drugi pružaju
gotove rešenja za autentifikaciju, pretragu, API autentifikaciju i druge često korišćene
funkcionalnosti.
Beograd, 2023.
Laravel je doživeo brojna značajna ažuriranja i poboljšanja tokom godina. Svaka nova verzija
donosi nove funkcionalnosti, poboljšanja performansi i ispravke grešaka. Laravel tim održava
stabilnost i bezbednost okvira, pružajući redovna ažuriranja i podršku zajednici programera.
Sve ove karakteristike su učinile Laravel jednim od najpopularnijih PHP okvira za razvoj veb
aplikacija. On se koristi u velikom broju projekata, od malih web stranica do velikih korporativnih
aplikacija. Laravel ima aktivnu zajednicu programera koja pruža podršku, dokumentaciju i veliki
broj tutorijala i resursa za učenje.
U budućnosti, možemo očekivati dalji razvoj Laravela i dodavanje novih funkcionalnosti. Laravel
istorijat i kontinuirani rast govore o njegovoj snazi i popularnosti među PHP programerima širom
sveta.
Prednosti korišćenja
1. Dependency Menadžment
Dependency Menadžment je jedna od najboljih karakteristika Laravel-a, razumevanje
funkcionalnosti servis kontejnera (IoC - Inversion of Control) je osnova za učenje modernih web
aplikacija. U Laravelu, IoC (inverzija kontrole) ili servisni kontejner - najsnažniji alat za
upravljanje zavisnostima klase.
2. Modularnost
Modularnost je stepen do koga se komponente web aplikacije mogu razdvojiti i ponovo sastaviti.
Strukturu web sajta možete podeliti na različite module, koji rade zajedno, kako bi web aplikacija
bila funkcionalna.
3. Autentifikacija
Autentifikacija je sastavni deo svake moderne web aplikacije. Pisanje autentifikacije u nekom
drugom framework-u može vam oduzeti puno vremena. Laravel pruža autentifikaciju izvan
standardnih okvira, jednostavnom komandom možete stvoriti potpuno funkcionalan sistem za
autentifikaciju.
Beograd, 2023.
4. Keširanje
Keširanje je tehnika skladištenja podataka na privremenom skladištu i može se brzo preuzeti po
potrebi. Uglavnom se keširanje koristi za povećanje performansi aplikacije. Laravel kešira
gotovo sve podatke od view-skripti do ruta, što pomaže Laravelu da smanji vrieme obrade i na
taj način povećava performanse.
5. Routing
Routing u Laravelu je vrlo lako razumeti i podseća na framework Rubi on Rails. Laravelov
routing može se koristiti za kreiranje RESTful aplikacija s lakoćom. Možete grupisati rute,
imenovati ih, na njih primeniti filtere i vezati ih za svoj model/entitet.
6. Restful Controllers
Laravelovi restful kontroleri omogućavaju vam da odvojite logiku za GET ili POST zahteve.
Takođe, možete da kreirate resource kontrolere - kontroleri vezani za CRUD jednog entiteta.
Kasnije možete vezati resource kontroler za rutu da automatski uslužuje sve CRUD rute.
8. Template Engine
U Laravelu ovo je "Blade". Blade pruža helper funkcije za formatiranje podataka prilikom
prikaza. Blade takođe implementira nasleđivanje šablona, koje možete koristiti za kreiranje
kompleksnih layout-a. Blade koristi ekstenziju .blade.php.
Beograd, 2023.
Sintaksu za izradu upita Laravela lako je razumeti i pisanje upita u bazu podataka je
jednostavno.
12. Bezbednost
Laravel pruža intuitivan način kreiranja sigurnih web aplikacija. Laravel čuva sve lozinke
šifrovane, umesto kao jednostavne tekstualne lozinke. Laravel koristi BCrytp za sakrivanje
lozinke. Laravel pruža bezbednost od SQL injection napada i izbegava sve korisničke unose
kako bi se izbeglo ubrizgavanje bilo kakve skripte.
13. Artisan
Laravel-ov command line alat zove se Artisan. Laravel dolazi sa desetinama unapred ugrađenih
komandi koje možete koristiti na komandnoj liniji za obavljanje zadataka. Pomoću ovog alata
možete izbeći ponavljajuće zadatake tokom procesa razvoja.
15. Envoy
Beograd, 2023.
Pomoću programa Envoy možete pokrenuti najčešće taskove na udaljenim serverima iz vaše
aplikacije. Takođe vam omogućava da postavite taskove za implementaciju.
16. Lokalizacija
Laravel vam omogućava da kreirate višejezičnu aplikaciju u isto vreme kada pravite aplikaciju.
Pristup stringu na različitim jezicima možete pristupiti koristeći trans() (deprecated od v5.6), __()
ili @lag() helper metodu.
Laravel se pokazao kao najbolji PHP framework zbog svih gore navedenih karakteristika i
stalnog unapređenja. Laravel pomaže u stvaranju moćne aplikacije na jednostavan, ekspresivan
način, i zbog toga je Laravel PHP framework koji se najviše koristi.
Migracije
Migracije u Laravelu koriste PHP kod za definisanje promena u šemi baze podataka. Svaka
migracija predstavlja jednu promenu, kao što je kreiranje nove tabele, dodavanje ili brisanje
kolone, promena tipa podataka i tako dalje. Laravel čuva informacije o svakoj migraciji koja je
izvršena u bazi podataka, tako da može pratiti koje su migracije već primenjene, a koje još treba
primeniti.
Kada se prvi put kreira Laravel projekat, dolazi sa nekoliko unapred definisanih migracija koje
su deo okvira. Ove migracije obično stvaraju osnovne tabele koje su potrebne za autentifikaciju,
korisnike, sesije i druge osnovne funkcionalnosti. Programer može dodati svoje migracije kako
bi definisao promene specifične za njihovu aplikaciju.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
Beograd, 2023.
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('proizvods', function (Blueprint $table) {
$table->increments('Id');
$table->string('Naziv');
$table->string('Cena');
$table->string('Slika');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('proizvods');
}
};
Modeli
Modeli u Laravelu su klase koje predstavljaju tabele u bazi podataka. Modeli omogućavaju
programerima da manipulišu podacima u bazi na jednostavan i intuitivan način. Kroz modele,
možete izvršavati upite nad bazom podataka, čitati, dodavati, ažurirati i brisati podatke.
Unutar projekta definisan je model koji se odnosi na Proizvod i koja direktno definiše identičnu
strukturu podatka o proizvodima iz baze podataka.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
Beograd, 2023.
class Proizvod extends Model
{
protected $primaryKey = 'Id';
use HasFactory;
}
Kontroleri
Kontroleri u Laravelu su klase koje upravljaju logikom obrade zahteva u aplikaciji. Kontroleri
primaju zahteve od korisnika, izvršavaju potrebne akcije i generišu odgovor. Oni igraju ključnu
ulogu u organizaciji i upravljanju logikom aplikacije. Rute ih pozivaju, tako da se uz pomoć njih
izvršavaju određene operacije i funkcije na serverskoj strani prilikom rutiranja unutar aplikacije.
1. create - funkcija zadužena za kreiranje novog objekta unutar tabele Proizvod unutar
baze podataka.
2. read - funkcija zadužena za učitavanje podataka iz tabele Proizvod unutar baze
podataka.
3. azurirajObrisi - funkcija zadužena za otvaranje stranice za ažuriranje proizvoda (i
dodatnog učitavanja podataka) i brisanja podataka
4. update - funkcija ažuriranja podataka
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Proizvod;
Beograd, 2023.
$pr = new Proizvod();
$pr->Naziv = $naziv;
$pr->Cena = $cena;
$pr->Slika = $slika;
$pr->save();
return redirect('/');
}
function read(){
$podaci = Proizvod::all();
return view('insertRead',['data'=>$podaci]);
}
$pr = Proizvod::find($id);
$pr->Naziv = $naziv;
$pr->Cena = $cena;
$pr->save();
Beograd, 2023.
return redirect('/');
}
}
Rute
Rute u Laravelu su definicije putanja koje ukazuju na odgovarajuće akcije u kontrolerima. Rute
određuju kako će aplikacija reagovati na dolazne zahteve korisnika i naravno, šta će biti izlaz
servera koji se kasnije obrađuje i prikazuje na frontu.
Unutar kreiranog projekta korišćena je samo web.php datoteka koja izgleda na sledeći način:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Kontroler;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::view('/','insertRead');
Route::post('unesiPodatke',[Kontroler::class, 'create']);
Route::get('/',[Kontroler::class, 'read']);
//Route::view('update','updateView');
Route::get('azurirajObrisi',[Kontroler::class, 'azurirajObrisi']);
Beograd, 2023.
Route::get('update',[Kontroler::class, 'update']);
Beograd, 2023.
Korisnicko uputstvo
Korisnik prilikom pokretanja servera na lokaciji 127.0.0.1:8000/ prvo pristupa početnoj
stranici na kojoj može pregledati sve prethodno unešene proizvode unutar uređene tabele, a
isto tako postoji i dugme pri vrhu strane gde korisnik može inicirati pokretanje Bootstrap modala
(pomoćnog ekrana) na kome se mogu unositi novi proizvodi.
Takođe korisnik ima priliku da klikom na dugmiće za ažuriranje i brisanje pojedinačnih redova
obriše ili ažurira informacije o proizvodu.
Prikaz pomoćnog modala gde korisnik unosi nove proizvode se može videti na narednoj
fotografiji.
Beograd, 2023.
Slika 2 - Pomoćni modal za unos novih proizvoda
Beograd, 2023.
Slika 3 - Odvojena stranica na kojoj se ažuriraju podaci o specifičnom proizvodu
Beograd, 2023.