En aquest tema, aprendrem a implementar la lògica del backend per a la nostra aplicació web. Ens centrarem en la creació de rutes, controladors i models per gestionar les operacions del servidor. Utilitzarem el framework Laravel per facilitar el desenvolupament.
Objectius
- Entendre la creació de rutes en Laravel.
- Aprendre a crear i utilitzar controladors.
- Implementar models per interactuar amb la base de dades.
- Gestionar operacions CRUD (Crear, Llegir, Actualitzar, Eliminar).
- Creació de Rutes
Les rutes defineixen com les sol·licituds HTTP són gestionades per la nostra aplicació. En Laravel, les rutes es defineixen en el fitxer routes/web.php
.
Exemple de Rutes
// routes/web.php use App\Http\Controllers\ArticleController; Route::get('/', function () { return view('welcome'); }); Route::resource('articles', ArticleController::class);
Explicació
Route::get('/', function () { ... });
: Defineix una ruta GET per a la pàgina principal.Route::resource('articles', ArticleController::class);
: Defineix rutes RESTful per al controladorArticleController
.
- Creació de Controladors
Els controladors gestionen la lògica de les sol·licituds HTTP. Podem crear un controlador utilitzant l'eina de línia de comandes Artisan.
Creació d'un Controlador
Exemple de Controlador
// app/Http/Controllers/ArticleController.php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Article; class ArticleController extends Controller { public function index() { $articles = Article::all(); return view('articles.index', compact('articles')); } public function create() { return view('articles.create'); } public function store(Request $request) { $article = new Article(); $article->title = $request->title; $article->content = $request->content; $article->save(); return redirect()->route('articles.index'); } public function show($id) { $article = Article::findOrFail($id); return view('articles.show', compact('article')); } public function edit($id) { $article = Article::findOrFail($id); return view('articles.edit', compact('article')); } public function update(Request $request, $id) { $article = Article::findOrFail($id); $article->title = $request->title; $article->content = $request->content; $article->save(); return redirect()->route('articles.index'); } public function destroy($id) { $article = Article::findOrFail($id); $article->delete(); return redirect()->route('articles.index'); } }
Explicació
index()
: Mostra una llista de tots els articles.create()
: Mostra el formulari per crear un nou article.store(Request $request)
: Emmagatzema un nou article a la base de dades.show($id)
: Mostra un article específic.edit($id)
: Mostra el formulari per editar un article existent.update(Request $request, $id)
: Actualitza un article existent.destroy($id)
: Elimina un article.
- Creació de Models
Els models representen les taules de la base de dades i proporcionen una interfície per interactuar amb les dades.
Creació d'un Model
Exemple de Model
// app/Models/Article.php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Article extends Model { use HasFactory; protected $fillable = ['title', 'content']; }
Explicació
protected $fillable = ['title', 'content'];
: Defineix els camps que es poden omplir de manera massiva.
- Migracions
Les migracions permeten crear i modificar les taules de la base de dades de manera programàtica.
Exemple de Migració
// database/migrations/xxxx_xx_xx_create_articles_table.php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateArticlesTable extends Migration { public function up() { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('articles'); } }
Executar Migracions
Exercici Pràctic
Objectiu
Crear una aplicació CRUD per gestionar articles.
Passos
- Crear les rutes necessàries en
routes/web.php
. - Crear el controlador
ArticleController
amb les accions CRUD. - Crear el model
Article
amb els campstitle
icontent
. - Crear la migració per a la taula
articles
. - Implementar les vistes per a les accions CRUD (index, create, edit, show).
Solució
Rutes
// routes/web.php use App\Http\Controllers\ArticleController; Route::resource('articles', ArticleController::class);
Controlador
// app/Http/Controllers/ArticleController.php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Article; class ArticleController extends Controller { // Implementació de les accions CRUD (veure exemple anterior) }
Model
// app/Models/Article.php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Article extends Model { use HasFactory; protected $fillable = ['title', 'content']; }
Migració
// database/migrations/xxxx_xx_xx_create_articles_table.php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateArticlesTable extends Migration { public function up() { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('articles'); } }
Vistes
resources/views/articles/index.blade.php
resources/views/articles/create.blade.php
resources/views/articles/edit.blade.php
resources/views/articles/show.blade.php
Conclusió
En aquesta secció, hem après a implementar la lògica del backend utilitzant Laravel. Hem creat rutes, controladors i models per gestionar les operacions CRUD. Aquest coneixement és fonamental per desenvolupar aplicacions web robustes i escalables. En el següent tema, ens centrarem en la integració amb una base de dades per completar la nostra aplicació.
Curs de Programació PHP
Mòdul 1: Introducció a PHP
- Què és PHP?
- Configuració de l'Entorn de Desenvolupament
- El teu Primer Script PHP
- Sintaxi i Variables de PHP
- Tipus de Dades en PHP
Mòdul 2: Estructures de Control
Mòdul 3: Funcions
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Àmbit de Variables
- Funcions Anònimes i Closures
Mòdul 4: Arrays
Mòdul 5: Treballant amb Formularis
Mòdul 6: Treballant amb Fitxers
- Lectura i Escriptura de Fitxers
- Funcions de Gestió de Fitxers
- Permisos de Fitxers
- Funcions de Directori
Mòdul 7: Programació Orientada a Objectes (OOP)
- Introducció a OOP
- Classes i Objectes
- Propietats i Mètodes
- Herència
- Interfícies i Classes Abstractes
- Traits
Mòdul 8: Treballant amb Bases de Dades
- Introducció a les Bases de Dades
- Connexió a una Base de Dades MySQL
- Realització d'Operacions CRUD
- Ús de PDO per a la Interacció amb Bases de Dades
- Seguretat en Bases de Dades
Mòdul 9: Tècniques Avançades de PHP
- Gestió d'Errors i Excepcions
- Sessions i Cookies
- Expressions Regulars
- Treballant amb JSON i XML
- PHP i Serveis Web
Mòdul 10: Frameworks PHP i Millors Pràctiques
- Introducció als Frameworks PHP
- Començant amb Laravel
- Arquitectura MVC
- Millors Pràctiques en Desenvolupament PHP
- Proves i Depuració