Skip to main content

create composer package

  1. create a directory for the package named user-core-php

  2. 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"
  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
  1. autoload composer after modification of composer.json
composer dump-autoload
  1. Initialisation Git
git init
git add .
git commit -m "Initial project structure for user-core-php"
  1. publish the git repository on GitHub (using GitHub Desktop)
  2. 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
  1. ajouter le code de chaque fichier
  2. 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