PHPackages                             badpixxel/php-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. badpixxel/php-sdk

ActivePackage[Utility &amp; Helpers](/categories/utility)

badpixxel/php-sdk
=================

Development Kit for Php Packages

2.2.2(4mo ago)030.8k↓59.4%20MITHTMLPHP ^7.2|^8.0

Since Dec 8Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/BadPixxel/Php-Sdk)[ Packagist](https://packagist.org/packages/badpixxel/php-sdk)[ RSS](/packages/badpixxel-php-sdk/feed)WikiDiscussions 3.0 Synced today

READMEChangelogDependencies (16)Versions (13)Used By (20)

BadPixxel Php-Sdk
=================

[](#badpixxel-php-sdk)

Standardized development kit for BadPixxel &amp; SplashSync PHP packages.

This SDK bundles **all the quality, CI/CD and build tooling** for a PHP project: just install it as `require-dev` and you get a complete GrumPHP configuration, multi-version Docker images, a ready-to-use Makefile and packaging tasks.

```
composer require --dev badpixxel/php-sdk
```

---

Features
--------

[](#features)

### 1. Ready-to-use GrumPHP quality suite

[](#1-ready-to-use-grumphp-quality-suite)

Centralized GrumPHP configuration that you import from your `grumphp.yml`:

```
imports:
    - "vendor/badpixxel/php-sdk/grumphp/generic.yml"
    - "vendor/badpixxel/php-sdk/grumphp/extras.yml"  # optional: module/docs build
```

Bundled and preconfigured tools:

CategoryTools**Lint**`phplint`, `jsonlint`, `yamllint`, `twigcs`, `composer`**Style**`phpcs` (PSR-12), `phpcsfixer`, `phpmd`, `phpcpd`**Analysis**`phpstan` (level 9 by default)**Git hooks**`git_blacklist` (blocks `var_dump`, `dump(`, `print_r`…)Shipped test suites:

- `travis` — full suite executed in CI
- `csfixer` — PSR-12 compliance
- `phpstan` — static analysis
- `splash` — module + documentation build

### 2. Shared code standards

[](#2-shared-code-standards)

Plug-and-play BadPixxel / SplashSync rule sets:

- **PHP-CS-Fixer**: `phpcs/cs.badpixxel.php`, `cs.splashsync.php`, `cs.immopop.php`
- **PHPMD**: `phpmd/phpmd.xml`
- **PHPStan**: `phpstan/badpixxel.neon`, `splashsync.neon`, plus Symfony variants

Switch between profiles with a single parameter:

```
parameters:
    mode: "badpixxel"   # or splashsync, immopop…
    stan-level: 9
```

### 3. Ready-to-use Makefile

[](#3-ready-to-use-makefile)

Include it in your project's Makefile:

```
include vendor/badpixxel/php-sdk/make/sdk.mk
```

Available targets:

TargetEffect`make lint`Run all linters (composer, php, json, yaml, twig)`make style`Run all style checks (cs, csfixer, md, cpd)`make stan`Run PHPStan`make quality`Run `lint` + `style` + `stan` in a row`make up/stop`Start/stop the project's Docker containers`make cc`Clear the Symfony cache on every container### 4. Multi-version PHP Docker images

[](#4-multi-version-php-docker-images)

Official images published on:

- `registry.gitlab.com/badpixxel-projects/php-sdk:php-X.Y`
- `splashsync/php-sdk:php-X.Y`

Available versions: **PHP 7.2 → 8.5**, with `-apache` variants (8.2/8.3/8.4) and a `jekyll` image for docs.

Highlights:

- Based on `dunglas/frankenphp` (PHP 8.x) with embedded Caddy
- Preinstalled extensions: `intl`, `zip`, `soap`, `opcache`, `apcu`, `xml`, `bcmath`, `pcntl`, `exif`, `xsl`, `sockets`, `ftp`, `gd`, `imagick`, `pdo_mysql`, `pdo_sqlite`, `mongodb`
- Composer 2 included
- CLI tools: `git`, `make`, `curl`, `wget`, `unzip`, `openssh`

### 5. Multi-PHP `docker-compose.yml`

[](#5-multi-php-docker-composeyml)

A single file to test your code against every PHP version in parallel:

```
make up                                  # start all containers
make all COMMAND="composer update -q"    # run the command on every container
make verify                              # run grumphp (travis + csfixer + phpstan) everywhere
```

### 6. Reusable GitLab CI pipeline

[](#6-reusable-gitlab-ci-pipeline)

The SDK's `.gitlab-ci.yml` provides the canonical skeleton:

- **Docker** stage: build &amp; push the PHP images (triggered on `docker/**` changes)
- **Quality** stage: run GrumPHP against every supported PHP version
- **Builds** stage: generate the Jekyll documentation site for GitLab Pages

Since the images are public, any project can reuse them:

```
tests:php-8.4:
    image: registry.gitlab.com/badpixxel-projects/php-sdk:php-8.4
    script:
        - composer update --prefer-dist --no-interaction
        - cat vendor/badpixxel/php-sdk/ci/grumphp.sh | sh
```

### 7. Custom GrumPHP tasks

[](#7-custom-grumphp-tasks)

Exposed through the `BadPixxel\PhpSdk\Extension\Loader` extension:

- **`build-module`** — Automatically packages the module as an installable ZIP archive (`BadPixxel\PhpSdk\Task\ModuleBuilder`)
- **`build-docs`** — Generates the Jekyll documentation site for GitLab/GitHub Pages (`BadPixxel\PhpSdk\Task\DocumentationBuilder`)

Enabled via the `splash` testsuite:

```
vendor/bin/grumphp run --testsuite=splash
```

### 8. CI/CD scripts

[](#8-cicd-scripts)

Reusable shell scripts in `ci/` and `toolkit/`:

- `ci/composer.sh`, `ci/grumphp.sh`, `ci/verify.sh`, `ci/after.sh`
- `toolkit/build.sh`, `toolkit/phpunit.sh`, `toolkit/manifest.sh`
- `symfony/install.sh`, `symfony/configure.sh`, `symfony/deploy.sh`

---

Quick start
-----------

[](#quick-start)

```
# 1. Install the SDK
composer require --dev badpixxel/php-sdk

# 2. Create the project's grumphp.yml
cat > grumphp.yml > Makefile

# 4. Check code quality
make quality
```

---

Requirements
------------

[](#requirements)

- **PHP 8.1+**
- Composer 2
- Docker + Docker Compose (for the multi-version workflows)

Documentation
-------------

[](#documentation)

Full configuration guide: [Php Sdk Doc](https://badpixxel-projects.gitlab.io/Php-Sdk)

License
-------

[](#license)

MIT — see [LICENSE](LICENSE).

Contributing
------------

[](#contributing)

Pull requests are welcome.

###  Health Score

51

—

FairBetter than 95% of packages

Maintenance84

Actively maintained with recent releases

Popularity27

Limited adoption so far

Community22

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~151 days

Recently: every ~106 days

Total

12

Last Release

1d ago

Major Versions

1.0.0 → 2.0.02022-04-05

1.0.x-dev → 2.1.02023-09-18

2.0.x-dev → 3.0.x-dev2026-07-02

PHP version history (2 changes)1.0.0PHP ^7.2|^8.0

3.0.x-devPHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/ca44939180803183ebc6af54f5a061c24b4f7823b4ab7b364e6158e71f9c0343?d=identicon)[BadPixxel](/maintainers/BadPixxel)

---

Top Contributors

[![BadPixxel](https://avatars.githubusercontent.com/u/8648419?v=4)](https://github.com/BadPixxel "BadPixxel (233 commits)")

### Embed Badge

![Health badge](/badges/badpixxel-php-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/badpixxel-php-sdk/health.svg)](https://phpackages.com/packages/badpixxel-php-sdk)
```

###  Alternatives

[drupal/core-dev

require-dev dependencies from drupal/drupal; use in addition to drupal/core-recommended to run tests from drupal/core.

2022.6M343](/packages/drupal-core-dev)[wp-cli/wp-cli-tests

WP-CLI testing framework

423.1M142](/packages/wp-cli-wp-cli-tests)[ec-europa/toolkit

Toolkit packaged for Drupal projects based on Robo.

40252.8k34](/packages/ec-europa-toolkit)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
