PhpPackage
Links
Zielsetzung
Leitfaden, wie ein PHP-Package erzeugt wird, wie es eingebunden wird.
Installation
apt install composer
Erzeugen eines Php-Packages
Das Erzeugen erfolgt interaktiv:
composer init
Wichtig für Benennen des Packages:
- Paketname: hamatoma/my_super_package Namespace: Hamatoma/MySuperPackage
- Paketname: hamatoma-only/my-super-package Namespace: HamatomaOnly\MySuperPackage
Package name (<vendor>/<name>) [hamatoma/my_super_package]: # Kleinbuchstaben. Namespace: Description: My super Package Author: Hamatoma <author@hamatoma.de> Minimum Stability: dev # oder alpha, beta, RC, stable Package Type (e.g. library, project, metapackage, composer-plugin): library License []: CC0 1.0 Universal Would you like to define your dependencies (require) interactively: yes Search for a package: the_ultimate_package Found 3 packages matching the_ultimate_package [0] fjerbi/ultimateblog [1] assegaiphp/validation [2] ingress-it-solutions/laravel-google-my-business Enter the version constraint to require (or leave blank to use the latest version): ... Would you like to define your dev dependencies (require-dev) interactively: no Add PSR-4 autoload mapping? Maps namespace "Hamatoma\MySuperPackage" to the path [src/ n to skip]: /src Do you confirm generation [yes] Would you like to install dependencies now [yes]?
Kochbuch
Entwicklung-Produktion
- https://stackoverflow.com/questions/21721495/how-to-deploy-correctly-when-using-composers-develop-production-switch
composer install {--dev | --no-dev}
, default ist--dev
Autoloaderdaten generieren
composer dump-autoload
Einbinden in Startseite index.php
require_once 'Hamatoma/MySuperPackage'; $class = new \Hamatoma\MySuperPackage\MyClass();
Einbinden in Projekt MyPhpProject
composer require hamatoma/my_super_package
Einbinden eines lokalen Packages
- composer.json
"repositories": [ { "type": "path", "url": "../my-package", "options": { "symlink": true } } ], ... "minimum-stability": "dev",
Einbinden eines Github-Repository
- composer.json
- Der Branch wird in "require" hinter "dev-" angegeben, z.B. "dev-master"
"repositories": [ { "type": "vcs", "url": "https://github.com/hamatoma/laraknife" } ], "require": { "monolog/monolog": "dev-master" } } ... "minimum-stability": "dev",