முக்கிய விஷயங்கள்
- Laravel இன்னும் இந்தியாவுல agency, startup backend வேலையில பெரிய பங்கு வகிக்குது - admin panel, CRM, small business sites எல்லாம் இதுல தான்.
- ஒரு சின்ன 'posts' app போதும் - Route கிட்டே hit ஆகுது, Route Controller-க்கு போகுது, Controller Eloquent-கிட்டே பேசுது, அப்புறம் Blade அதை காட்டுது.
- Route என்பது வெறும் URL to function mapping. Controller-ல தான் Logic இருக்கும்.
- Eloquent அதாவது raw SQL எழுதாம MySQL-ஓட plain PHP-ல பேசற Laravel-ஓட வழி.
- Blade-ல {{ }} மற்றும் @foreach, @if மாதிரி directives வைச்சி HTML-க்குள்ள PHP-ஐ clean-ஆ கலக்கலாம்.
- Login/Register பக்கத்த கைல எழுதாம Laravel Breeze கொஞ்சம் commands-ல Auth scaffolding தந்துடும்.
- இந்த stack இன்னும் இந்திய service companies interview-ல கேள்வி-ஆ வருது, அதனால memory-ல இல்லாம புரிஞ்சிக்கிட்டு தெரிஞ்சிருக்கணும்.
என்ன நடந்தது?
ரெண்டு வருஷத்துக்கு ஒரு தடவை, யாரோ ஒருத்தர் Twitter-ல 'PHP செத்துடுச்சு' சொல்லி போய்டுவாங்க. அப்புறம் அடுத்த வருஷமும் அதே பேச்சு. ஆனா நீங்க ஒரு Chennai அல்லது Coimbatore web agency-ல வேலை செய்தா தெரியும் - hospital appointment system, real estate CRM, school management portal இதெல்லாம் பாதிக்கு பாதி Laravel-ல தான் இருக்கும்.
Laravel flashy-ஆ இல்லை. அதுக்கு funding story இல்லை. ஆனா ஒரு developer weekend-ல ஒரு working app கட்டிடலாம் framework-ஓட சண்டை போடாம. அதனால தான் இது இன்னும் நிக்குது.
இந்த article news இல்ல. ஒரு sit-down guide. நாம ஒரு சின்ன app கட்டுவோம் - blog posts list. இதுல Install, Routes, Controllers, Eloquent, Migrations, Blade, Auth scaffolding எல்லாத்தையும் தொடுவோம்.
Laravel install பண்ணி project structure எப்படி இருக்கும்?
உங்க machine-ல PHP 8.3 அல்லது அதற்கு மேல Version, அப்புறம் Composer இருக்கணும். புது project ஒரு line command.
composer create-project laravel/laravel blogஇது முடிஞ்சவுடன் folder-க்குள்ள போயி பாருங்க. Beginner-ஆ நீங்க கவனிக்கணும்ன்னா இந்த 5 folders தான்:
routes/- உங்க URLs எல்லாம் இங்க இருக்கும்app/Http/Controllers/- Logic இங்கapp/Models/- Database table-ஐ PHP class-ஆ represent பண்றதுresources/views/- Blade templatesdatabase/migrations/- Table structure definitions
config, storage, vendor folders beginner stage-ல touch பண்ண வேண்டாம். அப்புறம் இந்த command போடுங்க:
php artisan serveஇது local server start பண்ணிடும். Browser-ல http://127.0.0.1:8000 போட்டா app live-ஆ run ஆகுது.
Routes, Controllers எப்படி வேலை செய்யும்?
Route-ன்னா ஒரே ஒரு கேள்விக்கு பதில் - யாரோ இந்த URL-க்கு வந்தா, எந்த function run ஆகணும்? அவ்ளோ தான்.
<?php
use App\Http\Controllers\PostController;
use Illuminate\Support\Facades\Route;
Route::get('/posts', [PostController::class, 'index']);
Route::get('/posts/{id}', [PostController::class, 'show']);
Route::post('/posts', [PostController::class, 'store'])->middleware('auth');இந்த controller-ஐ generate பண்ண இந்த command போடுங்க: php artisan make:controller PostController. Controller-ல தான் real வேலை நடக்கும் - data fetch பண்றது, input validate பண்றது, எந்த view காட்டணும்ன்னு decide பண்றது.
<?php
namespace App\Http\Controllers;
use App\Models\Post;
class PostController extends Controller
{
public function index()
{
$posts = Post::latest()->get();
return view('posts.index', ['posts' => $posts]);
}
public function show($id)
{
$post = Post::findOrFail($id);
return view('posts.show', ['post' => $post]);
}
}Route URL எடுக்குது, Controller logic செய்யுது, அப்புறம் view-க்கு பேச்சு கொண்டு போகுது. இது தான் flow.
Eloquent, Migrations - Database-ஓட பேசுறது எப்படி?
Eloquent அதாவது, Table-ஐ நீங்க SQL எழுதாம PHP class மாதிரி handle பண்றது. உதாரணமா, GPay transaction history fetch பண்ணும் backend-ல கூட இந்த மாதிரி pattern தான் இருக்கும்.
முதல்ல Migration create பண்ணணும் - table structure-ஐ code-ல define பண்றது:
php artisan make:migration create_posts_tableஅந்த migration file-ல இப்படி எழுதுவீங்க:
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body');
$table->timestamps();
});
}இப்போ இந்த command போட்டா table உண்டாகும்:
php artisan migrateஅப்புறம் Model create பண்ணணும். Model file simple-ஆ இருக்கும்:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'body'];
}இதை create பண்ண php artisan make:model Post போடலாம். இப்போ Post::latest()->get() எழுதினா போதும், Laravel தானாக SQL query ஆக்கி data கொண்டு வரும்.
Blade templates-ல HTML, PHP எப்படி கலக்குறது?
Blade-ன்னா Laravel-ஓட own templating system. HTML-க்குள்ள PHP மாதிரி data காட்ட, clean-ஆ syntax தருது.
<!-- resources/views/posts/index.blade.php -->
<x-layout>
<h1>All Posts</h1>
@foreach ($posts as $post)
<div class="post-card">
<h2>{{ $post->title }}</h2>
<p>{{ Str::limit($post->body, 100) }}</p>
</div>
@endforeach
@if ($posts->isEmpty())
<p>No posts yet, boss.</p>
@endif
</x-layout>{{ }} use பண்ணா Laravel automatic-ஆ HTML escape பண்ணிடும், அதனால XSS attack risk குறையும். @foreach, @if directives PHP-ஓட loop, condition logic-க்கு shortcut தான்.
Login, Register வேலையை யார் பண்ணும்? (Auth scaffolding)
Beginners பல பேருக்கு login/register page கைல எழுதணும்-ன்னு தோணும். அது தேவையே இல்லை. Laravel Breeze பாக்கேஜ் இதை ready-ஆ தந்துடும்.
composer require laravel/breeze --dev
php artisan breeze:install
npm install && npm run build
php artisan migrateஇந்த 4 commands முடிஞ்சவுடனே, login, register, password reset, email verification எல்லாம் ready-ஆ இருக்கும். நீங்க வெறும் customize பண்ணா போதும்.
Beginners செய்யற Common Mistakes என்னென்ன?
- Model-ல வேலை செய்யணும், Controller-ல SQL எழுதுறது: Controller fat-ஆ ஆகிடும். Database logic-ஐ Model-க்குள்ள வைக்கணும்.
- Blade-ல
{!! !!}எப்போவும் use பண்றது: இது HTML escape பண்ணாது, user input நேரடியா போனா XSS risk.{{ }}தான் default-ஆ use பண்ணணும். - Migration file edit பண்ணிட்டு migrate:fresh போடாம கஷ்டப்படுறது: Migration மாத்தினா, local-ல
php artisan migrate:freshபோட்டு table refresh பண்ணணும். - .env file git-க்கு push பண்றது: Database password, API keys எல்லாம் அதுல இருக்கும்.
.gitignore-ல இருக்கணும்.
இந்தியா IT companies-ல, Interview-ல இது எங்க வரும்?
இந்திய web agencies, small-to-mid service companies-ல Laravel developer role பல இடத்துல வருது - specifically PHP backend developer, full-stack developer positions-ல. Interview-ல 'Eloquent relationship எப்படி define பண்ணுவீங்க', 'Middleware என்ன வேலை செய்யும்', 'Blade-க்கும் plain PHP templating-க்கும் வித்தியாசம் என்ன' மாதிரி கேள்விகள் நேரடியா கேப்பாங்க. இது memory-ல படிக்கிறத விட, ஒரு சின்ன app கட்டி புரிஞ்சிக்கிட்டா நல்லா நிக்கும்.
நீங்க இப்போ என்ன பண்ணுங்க? (Practice Task)
இந்த posts app-ஐ எடுத்துக்கோங்க. இப்போ ஒரு Category model add பண்ணுங்க, Post-க்கும் Category-க்கும் belongsTo relationship define பண்ணுங்க. அப்புறம் Blade view-ல ஒவ்வொரு post card-லயும் அதோட category name காட்டுங்க. இது Eloquent relationships எப்படி வேலை செய்யும்-னு புரிஞ்சிக்க best way.
இந்த app-ஐ Production-க்கு எடுத்துப்போனா என்ன மாறும்?
Localhost-ல வேலை செய்யறது ஒரு கதை, ஆனா client-ஓட domain-ல live ஆக்குறது வேற கதை. சென்னை, கோயம்புத்தூர் agency-ல பல beginners local-ல எல்லாம் super-ஆ run ஆன app-ஐ cPanel shared hosting-க்கு போட்டவுடன் 500 error பார்த்து பதறிடுவாங்க. இதுக்கு காரணம் simple - shared hosting-ல public folder structure, PHP version, file permissions எல்லாம் local machine மாதிரி இருக்காது. அதனால .env file-ல APP_ENV=production, APP_DEBUG=false மாத்தி வைக்கணும், இல்லைன்னா error details எல்லாம் வெளியே தெரிஞ்சு security risk ஆகும்.
Deploy பண்ணும்போது step-by-step பாத்தா: முதல்ல code-ஐ server-க்கு கொண்டு போகணும் (Git அல்லது zip upload), அப்புறம் composer install --optimize-autoloader --no-dev போட்டு dependencies போடணும். அப்புறம் php artisan migrate --force போட்டு database table create பண்ணணும், php artisan config:cache போட்டு config-ஐ cache பண்ணி speed கூட்டணும். பல shared hosting providers Laravel-ஓட public/ folder-ஐ root-ஆ expect செய்யும், அதனால domain root-க்கும் public folder-க்கும் correct-ஆ point பண்ணணும். இது தப்பா இருந்தா whole site 403 அல்லது blank page காட்டும் - இது பலருக்கும் common ஆன mistake தான்.
இப்போ VPS அல்லது managed Laravel hosting (Forge, Ploi மாதிரி tools) use பண்றது trend ஆகி வருது, ஏன்னா shared hosting-ல queue workers, scheduler (cron jobs) சரியா வேலை செய்யாது. Startup-க்கு budget குறைவா இருந்தா shared hosting போதும், ஆனா scale ஆகும்போது DigitalOcean அல்லது AWS-ஓட VPS-க்கு move ஆகுறது தான் இந்திய agencies-ல common path. இந்த deployment knowledge தான் junior developer-க்கும் senior developer-க்கும் உள்ள real வித்தியாசம் - code எழுத தெரியும் எல்லோருக்கும், ஆனா அதை live-ல, real users-ஓட load-ஓட, சரியா நடத்த தெரிஞ்சவங்க தான் விலை போவாங்க.




கருத்துகள் (0)
Be the first to comment!