create composer package
-
create a directory for the package named
user-core-php -
intialize the composer package
- option 1 : interactivelly
cd user-core-php
composer init
- option 2: with CLI
cd user-core-php
composer init --no-interaction \
--name="anis-saied/user-core-php" \
--description="Core user domain logic (framework agnostic)" \
--type="library" \
--license="MIT" \
--require="php:^8.1"
- create the package structure (directories and files)
cd user-core-php
mkdir -p src/Domain/ValueObject
mkdir -p src/Domain/Repository
mkdir -p src/Application/Service
mkdir -p tests/Unit
mkdir -p docs/diagrams
touch src/Domain/User.php
touch src/Domain/ValueObject/UserId.php
touch src/Domain/ValueObject/Email.php
touch src/Domain/Repository/UserRepositoryInterface.php
touch src/Application/Service/UserService.php
touch tests/Unit/UserTest.php
touch docs/README.md
touch docs/diagrams/user-domain.puml
touch CHANGELOG.md
touch LICENSE
touch phpunit.xml
- autoload composer after modification of
composer.json
composer dump-autoload
- Initialisation Git
git init
git add .
git commit -m "Initial project structure for user-core-php"
- publish the git repository on GitHub (using GitHub Desktop)
- check final structure
tree -a
result
user-core-php
├── src
│ ├── Application
│ │ └── Service
│ │ └── UserService.php
│ └── Domain
│ ├── Repository
│ │ └── UserRepositoryInterface.php
│ ├── User.php
│ └── ValueObject
│ ├── Email.php
│ └── UserId.php
├── tests
│ └── Unit
│ └── UserTest.php
├── docs
│ ├── diagrams
│ │ └── user-domain.puml
│ └── README.md
├── CHANGELOG.md
├── LICENSE
├── composer.json
└── phpunit.xml
- ajouter le code de chaque fichier
- Vérification finale
composer install
composer dump-autoload
vendor/bin/phpunit
README.md
doit contenir :
- Description claire du package
- Installation via Composer
- Exemple rapide d’utilisation
- Liens vers la documentation complète (docs/)
- Informations sur la licence
Préparer le dépôt GitHub
.gitignoreconseillé :
/vendor/
/docs/html/
/var/
/composer.lock
Commit tout le code, tests, docs et diagrammes
Tag version, ex. v1.0.0 :
git tag v1.0.0
git push origin master --tags
Packagist
- Crée un compte sur packagist.org
- Push ton repo sur GitHub
- Sur Packagist : “Submit” → lien vers ton GitHub → Packagist récupère
composer.json - Ensuite, tout projet PHP pourra faire :
composer require anis-saied/user-core-php