mingyukim / more-command
add artisan command What I Want!
0.2.9
2023-08-25 07:11 UTC
Requires
- php: >=8.0.0
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). 자세한 정보는 라이선스를 참고하세요.