লারাভেল কম্পোজার প্যাকেজ ডেভেলপমেন্ট

follow this link link2

  1. ১.লারাভেল এর রুট ডিরেক্টরিতে package নামে একটি ফোল্ডার তৈরী করি।
  2. প্যাকেজ ফোল্ডার এর মধ্যে vendor এর নাম হিসাবে olee নামে একটি ফোল্ডার তৈরী করি
  3. olee ফোল্ডার এর মধ্যে আমরা যে নামে প্যাকেজ তৈরী করবো সে নামে একটি ফোল্ডার তৈরী করি যেমন sociallink .
  4. sociallink ফোল্ডার এর মধ্যে src নামে একটি ফোল্ডার তৈরী করি।
  5. src ফোল্ডার এর মধ্যে cmd ওপেন করে কমান্ড composer init লিখে এন্টার করলে পরবর্তী নির্দেশনা অবলম্বন করলে একটি src ফোল্ডার এ composer.json নামে একটি ফাইল তৈরী হবে
  6. এবার লারাভেল প্রজেক্ট এর রুট ফোল্ডার এ composer.json নামের ফাইলটি ওপেন করে তাতে আমাদের ভেন্ডর প্যাকেজ টি অ্যাড করি।
   
    "autoload": {
        "psr-4": {
            "olee\\items\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
         
            "olee\\items\\": "packages/olee/items/src"
        }
    },
    "extra": {
      
        "olee": {
            "providers": [
                "olee\\items\\ItemsServiceProvider"
            ]
        }
    }
  • এখানে “olee\items হলো ভেন্ডর ও প্যাকেজ এর নাম এই দুইটা আমাদের ভেন্ডর ও নাম অনুযায়ী পরিবর্তন করবো।
  • এবার আমাদের সার্ভিস প্রোভাইডার অ্যাড করতে হবে এজন্য লারাভেল প্রজেক্ট এর রুট ফোল্ডার এ cmd তে কমান্ড রান করি php artisan make:provider SocialLinkServiceProvider
  • এই কমান্ড আমাদের লারাভেল প্রজেক্ট এর app/Providers ফোল্ডার এ SocialLinkServiceProvider নামে একটি ফাইল তৈরী হবে এটাকে আমরা আমাদের প্যাকেজ ফোল্ডার এর src ফোল্ডার মুভ করে নিয়ে এসব এবং ফাইল টি ওপেন করে এর নেমস্পেস চেঞ্জ করবো। namespace olee\sociallink;
  • এবার লারাভেল প্রজেক্ট এর রুট ফোল্ডার এ cmd তে কমান্ড রান করি composer dump-autoload
  • SocialLinkServiceProvider ক্লাসটি প্রজেক্ট এর রুট ডিরেক্টরি তে config/app এ প্রোভাইডার ক্লাস অ্যাড করি   olee\sociallink\SocialLinkServiceProvider::class,
  • src ফোল্ডার এর মধ্যে controllers,views নামে দুইটি ফোল্ডার তৈরী করি।
  • আমাদের প্যাকেজ এর src ফোল্ডার এ composer.json আপডেট করি
{
    "name": "olee/sociallink",
    "description": "Simple Social Link Crud",
    "type": "library",
    "license": "mit",
    "authors": [
        {
            "name": "Olee Ahmmed",
            "email": "oleetechs@gmail.com"
        }
    ],
    "minimum-stability": "dev",
    "require": {},
    "autoload": {
       
        "psr-4": {
            "olee\\sociallink\\": "packages/olee/sociallink/src"
            
        }
    }

}

  • প্যাকেজ এর route ডিফাইন করার জন্য routes.php নামে ফাইল তৈরী করি। এবং তার মধ্যে লিখি
<?php 

use Illuminate\Support\Facades\Route;

  • SocialLinkServiceProvider এর boot এবং রেজিস্টার ফাঙ্কশন এর মধ্যে নিচের মতো হবে।
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->loadViewsFrom(__DIR__.'/views', 'sociallink');    
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        include __DIR__.'/routes.php';

        
    }
  • এবার আমরা কন্ট্রোলার ফাইল তৈরী করবো cmd তে কমান্ড টাইপ করে কন্ট্রোলার তৈরী করি যা app/Controllers ফোল্ডার এ controller.php কপি করে আমাদের প্যাকেজ এর controllers ফোল্ডার এ রাখবো এবং app/Controllers ফোল্ডার এ আমাদের বানানো কন্ট্রোলার টি মুভ করে আমাদের প্যাকেজ এর controllers ফোল্ডার এ রাখবো এবং নেমস্পেস পরিবর্তন করবো আমাদের প্যাকেজ ভেন্ডর নাম অনুসারে
  • controller.php ফাইলের নেমস্পেস হবে এরকম namespace olee\sociallink \Controllers;
  • SocialLinkController.php ফাইলের নেমস্পেস হবে এরকম namespace olee\sociallink \Controllers;
  • এবার আমাদের কন্ট্রোলার টি routes.php তে অ্যাড করবো
use olee\sociallink\Controllers\SocialLink;
Route::get('/posts', [SocialLinkController::class, 'index'])->name('posts.store');
  • Model নিয়ে কাজ করা। কমান্ড এর মাধ্যমে মডেল তৈরী করি যা app/models ফোল্ডার এ একটি মডেল তৈরী করে এবার প্যাকেজ এর src ফোল্ডার এ models নামে ফোল্ডার তৈরী করি এবং কমান্ড দ্বারা বানানো মডেল টি মুভ করে এবার প্যাকেজ এর src ফোল্ডার এ models আন্তে হবে এবং নেমস্পেস পরিবর্তন করি
  • sociallink কন্ট্রোলার ফাইল এ মডেলটি অ্যাড করতে হবে use olee\sociallink\Models\SocialLink;
  • মডেল ফাইলটি হবে এরকম
<?php

namespace olee\sociallink\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class SocialLink extends Model
{
    use HasFactory;
    protected $table = "metal_buttons";
    protected $fillable = ['title ','description'];
}

কন্ট্রোলার ফাইলটি হবে এরকম

<?php

namespace olee\sociallink\Controllers;

use Illuminate\Http\Request;
use olee\sociallink\Models\SocialLink;
class SocialLinkController extends Controller
{
    public function test (){
     $data =  SocialLink::all();  
return $data ;
    }
}

মাইগ্রেশন ফাইল অ্যাড করা : প্রথমে মাইগ্রেশন ফাইল তৈরী করে প্যাকেজ এর src ফোল্ডার এর migrations নামে ফোল্ডার তৈরী করে তারমধ্যে মাইগ্রেশন ফাইল রাখতে এবং সার্ভিস প্রোভাইডার এ বুট ফাঙ্কশন এ অ্যাড করতে হবে এভাবে

<?php

namespace olee\sociallink;

use Illuminate\Support\ServiceProvider;

class SocialLinkServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->loadViewsFrom(__DIR__.'/views', 'sociallink');
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        include __DIR__.'/routes.php';
        $this->loadMigrationsFrom(__DIR__.'/migrations');
    }
}

view ফোল্ডার হতে কন্ট্রোলার এ ভিউ লোড করা:

আমরা ভিউ রেজিস্টার করার সময় সেকেন্ড প্যারামিটার হিসাবে আমাদের ভিউ আইডেন্টিফায়ার হিসাবে items নিয়েছিলাম { $this->loadViewsFrom(DIR.’/views’, ‘items’);
} এবার ভিউ ফোল্ডার এর create.blade.php ফাইল কে কন্ট্রোলার এ এভাবে কল করবো

    public function index()
    {
        return view("items::create");
    }

Published by

Unknown's avatar

Nusrat Faria

I Am A Web Developer And A Android Developer. This Is My Personal Blog So Noted My Work For Helping People .

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.