Download the PHP package dschuppelius/php-common-toolkit without Composer

On this page you can find all versions of the php package dschuppelius/php-common-toolkit. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package php-common-toolkit

php-common-toolkit

General-purpose PHP utility toolkit providing platform-agnostic helpers, CSV processing, and executable wrappers.

PHP


Features


Architecture


Requirements

The following tools are required to successfully run dschuppelius/php-common-toolkit:

1. TIFF Tools

Required for processing and handling TIFF files.

2. Xpdf

Required for handling PDF files.

3. ImageMagick

For converting and processing image files.

4. muPDF Tools

For processing PDF and XPS documents.

5. QPDF

For advanced PDF manipulation and processing.

Install the Toolkit into your Project

The Toolkit requires a PHP version of 8.1 or higher. The recommended way to install the SDK is through Composer.


Usage Examples

Value Objects

Immutable, exakt rechnende Value Objects unter CommonToolkit\ValueObjects — Konstruktion über benannte Factories (of() wirft bei ungültiger Eingabe, tryFrom()/ofNullable() liefern null). Sensible Identifikatoren (Iban, EmailAddress, PhoneNumber, VatNumber, CreditorIdentifier, GermanTaxId, GermanTaxNumber) implementieren bewusst weder Stringable noch JsonSerializable — Klarwert nur über getValue(), Anzeige über masked().

iCalendar

CSV Processing

Bank Validation

Creditor Reference (RF, ISO 11649)

CEF Lines (SIEM)

Bankleitzahl-/BIC-Daten (BLZ/BIC data)

Die Bundesbank-Datendateien werden mit dem Paket ausgeliefert, daher funktionieren BankHelper::bicFromIBAN(), bicFromBLZ(), blzFromBIC() und checkBIC() out-of-the-box auch offline – ohne vorherigen Online-Lauf:

Bei Ablauf (expiry_days in config/helper.json, Default 365 Tage) werden die Daten beim nächsten Zugriff online von bundesbank.de aktualisiert. Schlägt die Aktualisierung fehl (z.B. offline), wird die vorhandene – ggf. veraltete, aber gültige – ausgelieferte Datei weiterverwendet (Stale-Fallback) statt leerer Ergebnisse.

Den Netzzugriff kannst du programmatisch steuern:

Manuelles Aktualisieren: Die beiden Dateien in data/ können jederzeit durch die aktuellen Versionen von bundesbank.de ersetzt werden (URLs in config/helper.json unter Bundesbank.resourceurl bzw. Zahlungsdienstleister.resourceurl). Nach dem Ersetzen BankHelper::clearCache() aufrufen, falls der Prozess weiterläuft.

MIME-Typ ohne Datei (Byte-basiert)

File::mimeType() braucht einen Pfad. Liegt der Inhalt nur im Speicher (Upload, HTTP-Antwort, entpackter Archiv-Eintrag), erkennt File::mimeTypeFromContent() den Typ direkt aus den Bytes – gleiche Rückgabe-Semantik (string|false):

Erkannt wird primär über finfo::buffer(). Fehlt ext-fileinfo oder liefert es kein belastbares Ergebnis (application/x-empty, application/octet-stream), greift File::mimeTypeFromMagicBytes() – eine deterministische Magic-Bytes-Tabelle (PDF, PNG, JPEG, GIF, ZIP, TIFF, GZIP, BMP, RIFF/WebP) plus Inhaltsheuristik für XML, HTML, JSON und Text. Unbekannter Binärinhalt ergibt application/octet-stream, ein leerer String false.

Data-URLs (Bilder aus dem Browser)

Eine Zeichenfläche oder ein eingefügter Screenshot kommt als data:image/png;base64,… beim Server an – also als Eingabe vom Client. DataUrlHelper::decode() dekodiert streng, begrenzt die Größe und prüft den Typ am Inhalt, nicht an der Angabe in der URL:

Reines Base64 ohne data:-Präfix wird ebenfalls angenommen. Die Fehlermeldung bleibt Sache des Aufrufers: decode() liefert false statt einer Exception.

Currency Formatting

Enum Usage

Configured Helper mit CommandBuilder

Das Toolkit nutzt den CommandBuilder aus dem php-config-toolkit für elegantes Command-Building mit externen Tools:

Eigene Helper mit Executable-Konfiguration

Erstelle eigene Helper-Klassen die externe Tools nutzen:

Mit passender Konfigurationsdatei (config/image_executables.json):


Executable Configuration

Das Toolkit nutzt JSON-Konfigurationsdateien für externe Tools. Die Konfiguration ermöglicht:

Verfügbare Methoden in ConfiguredHelperAbstract

Methode Beschreibung
getConfiguredCommand($name, $params) Baut einen Shell-Befehl mit Platzhalter-Ersetzung
getConfiguredArgv($name, $params) Liefert Programm und Argumente als Liste fuer Shell::run()/Shell::execute() (ohne Shell, mit Zeitgrenze)
getConfiguredJavaCommand($name, $params) Baut einen Java-Befehl (java -jar ...)
isExecutableAvailable($name) Prüft ob ein Tool verfügbar ist
getExecutablePath($name) Gibt den konfigurierten Pfad zurück
getResolvedExecutableConfig($name, $params) Gibt die vollständige Tool-Konfiguration zurück

Externe Programme und nicht vertrauenswürdige Dateien

MediaHelper, OfficeHelper, ImageCropHelper und TifFile reichen Dateien des Aufrufers an FFmpeg, LibreOffice und ImageMagick weiter. Diese Programme folgen von sich aus Verweisen im Dateiinhalt. Stammt die Datei von Dritten (Upload), kann sie den Rechner so eine eigene Datei lesen oder eine ausgehende Anfrage stellen lassen. Die Helper begrenzen das wie folgt:

FFmpeg (MediaHelper)

convert(), getAudioInfo() und getVideoInfo() starten FFmpeg mit -protocol_whitelist file,pipe vor -i. Die Eingabe ist damit eine lokale Datei: eine präparierte Playlist oder ein Container mit Verweisen öffnet weder Netz- noch Fremdprotokolle (http, tcp, concat, subfile, crypto, data …), und eine Netzadresse als $input wird abgelehnt. Wer ffmpeg-info in einer eigenen Konfiguration überschreibt, bekommt die Grenze trotzdem (eine eigene -protocol_whitelist bleibt stehen).

transcribeWhisper() reicht die Datei an Whisper weiter; Whisper startet sein eigenes FFmpeg ohne diese Grenze. Fremde Dateien deshalb vorher mit MediaHelper::convert() in WAV wandeln und die WAV-Datei transkribieren.

LibreOffice (OfficeHelper)

Jeder Aufruf startet mit einem eigenen Profil, das die Einträge aus config/libreoffice/registrymodifications.xcu trägt, und mit --norestore --nolockcheck --nodefault:

Folge für die Ausgabe: verknüpfte Inhalte fehlen, eingebettete bleiben. Ohne die mitgelieferte Datei startet kein Aufruf (convert() liefert false). Den Netzwerk-Egress des Prozesses selbst kann ein Profil nicht sperren — das gehört in den Betrieb (z. B. systemd IPAddressDeny=).

ImageMagick (ImageCropHelper, TifFile)

ImageMagick wählt den Coder aus Inhalt und Endung der Datei. Eine Datei mit Bild-Endung kann so als Zeichen-, Skript- oder Dokumentformat gelesen werden (SVG/MVG mit Verweisen auf andere Dateien, PostScript über Ghostscript). Zwei Maßnahmen gehören zusammen:

1. Coder festnageln. Die crop*-Methoden und getImageDimensions() nehmen als letzten Parameter den Coder der Eingabe ("png" oder "png:"); ImageMagick liest die Datei dann ausschließlich als dieses Format. Der Coder kommt aus dem geprüften Typ der Datei, nicht aus ihrem Namen:

Ohne den Parameter bleibt das Verhalten wie bisher (ImageMagick wählt selbst) — das ist nur für Dateien aus eigener Quelle gedacht. TifFile::repair() setzt den Coder selbst (jpeg: bzw. tiff:), weil die Methode den MIME-Typ ohnehin prüft.

2. Restriktive policy.xml. Der Coder schützt nur die Eingabe selbst. Was ImageMagick darüber hinaus darf (Fremdprogramme starten, Netzadressen abrufen, Dateien per @datei oder text: lesen), regelt die Policy. Eine eigene Datei in einem eigenen Ordner ablegen und den Ordner vor dem Aufruf über MAGICK_CONFIGURE_PATH bekannt machen — die Helper starten ImageMagick über die Shell, die Umgebung des PHP-Prozesses gilt also:

ImageMagick liest diese Datei zusätzlich zur policy.xml des Systems; gibt die System-Policy einen dieser Coder ausdrücklich frei, gewinnt sie. Prüfen: MAGICK_CONFIGURE_PATH=/pfad/zum/ordner convert -list policy.


License

This project is licensed under the MIT License.

Daniel Joerg Schuppelius 📧 [email protected]

Versions

2.6 — Externe Programme gehärtet (FFmpeg, LibreOffice, ImageMagick)

2.0 — Money::of() ist streng

Migration: Aufrufer, die leere oder fremde Strings an Money::of() geben, auf Money::ofNullable() umstellen oder den Fall vorher behandeln.

Releases are tagged in Git; git tag --sort=-v:refname lists them (latest: v2.6.1). There is no separate changelog file — the tags and the commit history are the record.


All versions of php-common-toolkit with dependencies

PHP Build Version
Package Version
Requires php Version >=8.1 <8.6
ext-bcmath Version *
ext-dom Version *
ext-intl Version *
ext-zip Version *
dschuppelius/php-config-toolkit Version ^0.5.11
maxmind-db/reader Version ^1.11
symfony/process Version ^6.4 || ^7.0 || ^8.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package dschuppelius/php-common-toolkit contains the following files

Loading the files please wait ...