bigtechlab / ddd
这是我的包 ddd
v1.0
2023-12-05 13:30 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.14.0
- theaddresstech/ddd: ^1.1
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
This package is not auto-updated.
Last update: 2024-09-24 17:13:04 UTC
README
按照以下步骤安装此包
1-更新你的 composer.json
以下代码
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/",
"Src\\":"src/"
}
},
2- 运行以下命令
composer dump-autoload
3-通过编写以下命令设置包
composer require bigtechlab/ddd
用法
该包提供了 2 个命令
1-第一个命令
php artisan ddd:directory
运行 php artisan ddd:directory 后,将在基础路径下生成 src
文件夹,该文件夹包含 3 个主要文件夹
1-Common: this will contain all common folders such as :
1.1-Commands :folder will contain all console commands files that will generate through project.
1.2-Console :folder will contain `kernel.php` that where All of your console commands are registered within your application's.
1.3-Exceptions :folder will contain `kernel.php` This class contains a register method where you may register custom exception reporting and rendering callbacks
1.4-Helpers :folder will contain all helpers files that may need or adding new helper files as you need such as : `main.php`,`Enum.php`
1.5-Http :folder will contain:
1.5.1-Http Folder : Will contain Middleware Folder which will contain All middlewares that will available in project.
1.5.2-kernel.php : This class is used to register your middleware
1.6-Providers :folder will contain service providers that will bootstrp your own application such as (DomainServiceProvider,RouteServiceProvider,RepositoryServiceProvider`,HelperServiceProvider,EventServiceProvider,PolicyServiceProvider)
2-Infrastructure will contain all infrastucture files that will be base calsses for classes that find in Domain Folder such as:
2.1-AbstractModels : contain BaseModel class that all entities extend from it
2.2-AbstractProviders :contain ServiceProvider class that all service providers extend from it
2.3-AbstractRepositories :contain basis calsses that all entity EloquentRepository and entity contract repository will extend from it
2.4-Commands :contain basis calss that all commands in project will extend from it
2.5-Contracts :contain BaseRepository class that EloquentRepository extend from it and scope class that all scopes in class extend from it
2.6-Http : contain basis for Controller,Request,Resource,Factory
2.7-scoping: contain scoper class
2.8-Traits :contain set of traits that will used in app
3-Domain Holds the future-domains of the app by default Dashboard And User will be in Domain each domain contain folders
3.1-Database contain all migrations ,factotories,seeders entities in Domain
3.2-Entities Contain all entities in Domain besides Traits Folder that contain (CustomAttributes folder contain entityAttributes and Relations Folder contain entity Relations )
3.3-Http contain three folders (Controller ,Request ,Resources) in each folder contain contain logic for aspecific job
3.4-Policies contain policy that declared in domain
3.5-Providers contain providers that related to domain such as (DomainServiceProvider,RouteServiceProvider,RepositoryServiceProvider`,HelperServiceProvider,EventServiceProvider,PolicyServiceProvider)
3.6-Repositories contain two folder (Contracts,Eloquent) that are included to support l5 Repository
3.7-Routes contain two folder one for api and other for web containing (auth,guest,public)
3.8-Resources containing views related to Entites in Domain
3.9-Traits can declare traits that specific for each domain in it
the command will modify the Kenel namespace in the `boostrap/app.php` + overwrite the service-providers namespaces in `config/app.php`
2-第二个命令: php artisan ddd:make {type}
`{type}` can be :
`Domain` : create new folder in Domain with name that passes in command and will contain three folders (providers,routes,traits,contract)
`Entity` : create new Entity in Entities Folder in specified Domain
`Repo` : create new Repository in Repositories folder in specified Domain
`Event` : create new Event in Events folder in specified Domain and adding to listen in EventServiceProvider in specified Domain
`Listener` : create new Listner in Listners folder in specified Domain and adding to listen in EventServiceProvider in specified Domain
`Resource` : create a new resource in a specified domain with apecific entity
`Request` : create a new Request in a specified domain
`Rule` :create a new Rule in a specified domain
`Migration` :create a new migration in a specified domain
`Factory` :create a new factory in a specified domain
`Seeder` :create a new seeder in a specified domain
`Notification` :create new notification in aspecified domain
`Controller` :create new controller in aspecified domain that can be (resource,sac)
`Crud` : [ creates : Entity + DatabaseView + Migration + Factory + Seeder + Views + Datatable + Request + Repo + Resource + Controllers ]
请注意,为了创建任何类型可能需要一些选项,你将在创建过程中被询问。因此,你可以运行上述命令而不指定任何附加选项