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
ArticleControlleramb les accions CRUD. - Crear el model
Articleamb els campstitleicontent. - 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.phpresources/views/articles/create.blade.phpresources/views/articles/edit.blade.phpresources/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ó
