mingyukim/more-command

add artisan command What I Want!

0.2.9 2023-08-25 07:11 UTC

This package is auto-updated.

Last update: 2024-10-25 09:53:50 UTC


README

artisan make에 없지만, 자주 사용하는 패턴 및 클래스를 command 명령어로 쉽게 생성하게 만들어주는 라이브러리

설치 방법

다음의 명령어를 사용해 composer를 통해 패키지를 설치합니다:

composer require mingyukim/more-command

또는 composer.json의 require-dev 섹션에 다음을 추가하고 composer update를 실행합니다:

"require": {
      "mingyukim/more-command": "*"
}

패키지 설정 파일 발행

 php artisan vendor:publish --provider="MingyuKim\MoreCommand\MoreCommandProvider" --tag="config"

기본 네임스페이스 변경하기 [config/more-command.php]

<?php
return [
    'repository-namespace' => 'App', // 저장소 클래스에 대한 원하는 네임스페이스
    'trait-namespace' => 'App', // Traits에 대한 원하는 네임스페이스
    'service-namespace' => 'App', // 서비스에 대한 원하는 네임스페이스   
    'view-root-path' => 'resources' // Blade 템플릿 생성 장소. view-root-path/views/ 하위에 생성됨.
];

모든 Repository 생성

App/Models 폴더를 참조하여 repository Class 를 생성합니다.
php artisan make:repositories {--print}

예제:

php artisan make:repositories

각각의 Repository 생성

하나의 repository Class 를 생성합니다.
php artisan make:repository {--print} {repositoryName}

예제:

php artisan make:repository TestRepository

결과물:

<?php

namespace App\Repositories;

use App\Models\Test;
use App\Repositories\BaseTemplate\BaseRepository;
use App\Repositories\BaseTemplate\RepositoryInterface;

class TestRepository extends BaseRepository implements RepositoryInterface
{
    public function __construct(Test $model = null)
    {
        if($model == null) {
            $model = new Test();
        }
        parent::__construct($model);
    }

    public function findById($id, array $columns = ['*'], array $relations = [])
    {
        return parent::findById($id, $columns, $relations); // TODO: Change the autogenerated stub
    }

    public function all(array $columns = ['*'], array $relations = [])
    {
        return parent::all($columns, $relations); // TODO: Change the autogenerated stub
    }

    public function firstOrNew(array $attributes = [], array $values = [])
    {
        return parent::firstOrNew($attributes, $values); // TODO: Change the autogenerated stub
    }

    public function firstOrCreate(array $attributes = [], array $values = [])
    {
        return parent::firstOrCreate($attributes, $values); // TODO: Change the autogenerated stub
    }

    public function insert($arrItems)
    {
        return parent::insert($arrItems); // TODO: Change the autogenerated stub
    }

    public function create(array $attributes)
    {
        return parent::create($attributes); // TODO: Change the autogenerated stub
    }

    public function update($id, array $attributes)
    {
        return parent::update($id, $attributes); // TODO: Change the autogenerated stub
    }

    public function updateOrCreate(array $attributes, array $values = [])
    {
        return parent::updateOrCreate($attributes, $values); // TODO: Change the autogenerated stub
    }

    public function delete($ids)
    {
        return parent::delete($ids); // TODO: Change the autogenerated stub
    }

}

각각의 Trait 생성

하나의 Trait File 을 생성합니다.
php artisan make:trait {--print} {triatName} {--s}

예제:

php artisan make:trait TestTrait
php artisan make:trait TestSingleTonTrait --s // 싱글톤 패턴

결과물:

<?php

namespace App\Traits;

trait TestTrait
{

}
<?php

namespace App\Traits;

trait TestSingleTonTrait
{
    private static $instanse = null;

    /**
     *
     * @return self
     */
    static function getInstance()
    {
        if (self::$instanse == null) {
            self::$instanse = new self;
        }

        return self::$instanse;
    }
}

각각의 Service 생성

하나의 Service Class 를 생성합니다.
php artisan make:service {--print} {serviceName}

예제:

php artisan make:service TestService

결과물:

<?php

namespace App\Services;

use App\Repositories\TestRepository;

class TestService
{
    protected $repository;

    public function __construct(TestRepository $repository)
    {
        $this->repository = $repository;
    }

    public function getAllTest()
    {
        return $this->repository->all();
    }

    public function createTest(array $data)
    {
        return $this->repository->create($data);
    }

    public function updateTest(mixed $id, array $data)
    {
        return $this->repository->update($id, $data);
    }

    public function deleteTest(mixed $ids)
    {
        return $this->repository->delete($ids);
    }
    
}

각각의 View Blade 생성

Create a View.
php artisan make:view {--print} {viewName}

예제:

php artisan make:view testview

결과물:

/resources/views/testview.blade.php

라이선스

MIT 라이선스(MIT). 자세한 정보는 라이선스를 참고하세요.