PhpPackage

Aus Info-Theke
Zur Navigation springen Zur Suche springen


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

Aktualisieren

composer update

Entwicklung-Produktion

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 Pakets

  • 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",