PHPackages                             laminas-api-tools/api-tools-skeleton - 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. [Framework](/categories/framework)
4. /
5. laminas-api-tools/api-tools-skeleton

ActiveProject[Framework](/categories/framework)

laminas-api-tools/api-tools-skeleton
====================================

Skeleton Application for Laminas API Tools

1.9.0(2y ago)5520.7k72[24 issues](https://github.com/laminas-api-tools/api-tools-skeleton/issues)[1 PRs](https://github.com/laminas-api-tools/api-tools-skeleton/pulls)BSD-3-ClausePHPPHP ~8.0.0 || ~8.1.0 || ~8.2.0

Since Dec 31Pushed 2y ago12 watchersCompare

[ Source](https://github.com/laminas-api-tools/api-tools-skeleton)[ Packagist](https://packagist.org/packages/laminas-api-tools/api-tools-skeleton)[ Docs](https://api-tools.getlaminas.org)[ Fund](https://funding.communitybridge.org/projects/laminas-project)[ RSS](/packages/laminas-api-tools-api-tools-skeleton/feed)WikiDiscussions 1.10.x Synced 1mo ago

READMEChangelog (5)Dependencies (17)Versions (63)Used By (0)

Laminas API Tools Skeleton Application
======================================

[](#laminas-api-tools-skeleton-application)

> ## 🇷🇺 Русским гражданам
>
> [](#-русским-гражданам)
>
> Мы, участники Laminas, родились и живем в разных странах. У многих из нас есть друзья, родственники и коллеги как в России, так и в Украине. Некоторые из нас родились в России. Некоторые из нас живут в России. У некоторых бабушки и дедушки сражались с фашистами во Второй мировой войне. Здесь никто не поддерживает фашизм.
>
> У одного из нас есть украинская родственница, которая спаслась из дома вместе с сыном. Поезд задержался из-за бомбежки на дороге впереди. У нас есть друзья, которые прячутся в бомбоубежищах. Мы с тревогой ждем весточки от них после воздушных налетов, которые беспорядочно наносят удары и попадают по больницам, школам, детским садам и домам. Мы не берем это из каких-либо СМИ. Мы наблюдаем это напрямую.
>
> Вы доверяете нам достаточно, чтоб использовать наши программы, и мы просим вас довериться нам вновь. Мы нуждаемся в помощи. Выходите и протестуйте против этой бесполезной войны. Остановите кровопролитие. Скажите "Нет войне!"
>
> ## 🇺🇸 To Citizens of Russia
>
> [](#-to-citizens-of-russia)
>
> We at Laminas come from all over the world. Many of us have friends, family and colleagues in both Russia and Ukraine. Some of us were born in Russia. Some of us currently live in Russia. Some have grandparents who fought Nazis in World War II. Nobody here supports fascism.
>
> One team member has a Ukrainian relative who fled her home with her son. The train was delayed due to bombing on the road ahead. We have friends who are hiding in bomb shelters. We anxiously follow up on them after the air raids, which indiscriminately fire at hospitals, schools, kindergartens and houses. We're not taking this from any media. These are our actual experiences.
>
> You trust us enough to use our software. We ask that you trust us to say the truth on this. We need your help. Go out and protest this unnecessary war. Stop the bloodshed. Say "stop the war!"

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

[](#requirements)

Please see the [composer.json](composer.json) file.

Installation
------------

[](#installation)

### Via release tarball

[](#via-release-tarball)

Grab the latest release via the [Laminas API Tools website](https://api-tools.getlaminas.org/)and/or the [releases page](https://github.com/laminas-api-tools/api-tools-skeleton/releases); each release has distribution tarballs and zipballs available.

Untar it:

```
$ tar xzf api-tools-skeleton-{version}.tgz
```

(Where `{version}` is the version you downloaded.)

Or unzip, if you chose the zipball:

```
$ unzip api-tools-skeleton-{version}.zip
```

(Where `{version}` is the version you downloaded.)

### Via Composer (create-project)

[](#via-composer-create-project)

You can use the `create-project` command from [Composer](https://getcomposer.org/)to create the project in one go (you need to install [composer](https://getcomposer.org/doc/00-intro.md#downloading-the-composer-executable)):

```
$ curl -s https://getcomposer.org/installer | php -- --filename=composer
$ composer create-project -sdev laminas-api-tools/api-tools-skeleton path/to/install
```

### Via Git (clone)

[](#via-git-clone)

First, clone the repository:

```
# git clone https://github.com/laminas-api-tools/api-tools-skeleton.git # optionally, specify the directory in which to clone
$ cd path/to/install
```

At this point, you need to use [Composer](https://getcomposer.org/) to install dependencies. Assuming you already have Composer:

```
$ composer install
```

### All methods

[](#all-methods)

Once you have the basic installation, you need to put it in development mode:

```
$ cd path/to/install
$ composer development-enable
```

Now, fire it up! Do one of the following:

- Create a vhost in your web server that points the DocumentRoot to the `public/` directory of the project
- Fire up the built-in web server in PHP(**note**: do not use this for production!)

In the latter case, do the following:

```
$ cd path/to/install
$ php -S 0.0.0.0:8080 -ddisplay_errors=0 -t public public/index.php
# OR use the composer alias:
$ composer serve
```

You can then visit the site at  - which will bring up a welcome page and the ability to visit the dashboard in order to create and inspect your APIs.

### NOTE ABOUT USING APACHE

[](#note-about-using-apache)

Apache forbids the character sequences `%2F` and `%5C` in URI paths. However, the Laminas API Tools Admin API uses these characters for a number of service endpoints. As such, if you wish to use the Admin UI and/or Admin API with Apache, you will need to configure your Apache vhost/project to allow encoded slashes:

```
AllowEncodedSlashes On
```

This change will need to be made in your server's vhost file (it cannot be added to `.htaccess`).

### NOTE ABOUT OPCACHE

[](#note-about-opcache)

**Disable all opcode caches when running the admin!**

The admin cannot and will not run correctly when an opcode cache, such as APC or OpCache, is enabled. Laminas API Tools does not use a database to store configuration; instead, it uses PHP configuration files. Opcode caches will cache these files on first load, leading to inconsistencies as you write to them, and will typically lead to a state where the admin API and code become unusable.

The admin is a **development** tool, and intended for use a development environment. As such, you should likely disable opcode caching, regardless.

When you are ready to deploy your API to **production**, however, you can disable development mode, thus disabling the admin interface, and safely run an opcode cache again. Doing so is recommended for production due to the tremendous performance benefits opcode caches provide.

### NOTE ABOUT DISPLAY\_ERRORS

[](#note-about-display_errors)

The `display_errors` `php.ini` setting is useful in development to understand what warnings, notices, and error conditions are affecting your application. However, they cause problems for APIs: APIs are typically a specific serialization format, and error reporting is usually in either plain text, or, with extensions like XDebug, in HTML. This breaks the response payload, making it unusable by clients.

For this reason, we recommend disabling `display_errors` when using the Laminas API Tools admin interface. This can be done using the `-ddisplay_errors=0` flag when using the built-in PHP web server, or you can set it in your virtual host or server definition. If you disable it, make sure you have reasonable error log settings in place. For the built-in PHP web server, errors will be reported in the console itself; otherwise, ensure you have an error log file specified in your configuration.

`display_errors` should *never* be enabled in production, regardless.

### Vagrant

[](#vagrant)

If you prefer to develop with Vagrant, there is a basic vagrant recipe included with this project.

This recipe assumes that you already have Vagrant installed. The virtual machine will try to use localhost:8080 by default, so if you already have a server on this port of your host machine, you need to shut down the conflicting server first, or if you know how, you can reconfigure the ports in Vagrantfile.

Assuming you have Vagrant installed and assuming you have no port conflicts, you can bring up the Vagrant machine with the standard `up` command:

```
$ vagrant up
```

When the machine comes up, you can ssh to it with the standard ssh forward agent:

```
$ vagrant ssh
```

The web root is inside the shared directory, which is at `/var/www`; this is also the home directory for the vagrant issue, which will be the initial directory you land in once you connect via SSH.

The image installs composer during provisioning, meaning you can use it to install and update dependencies:

```
# Install dependencies:
$ vagrant ssh -c 'composer install'
# Update dependencies:
$ vagrant ssh -c 'composer update'
```

You can also manipulate development mode:

```
$ vagrant ssh -c 'composer development-enable'
$ vagrant ssh -c 'composer development-disable'
$ vagrant ssh -c 'composer development-status'
```

> #### Vagrant and VirtualBox
>
> [](#vagrant-and-virtualbox)
>
> The vagrant image is based on `bento/ubuntu-16.04`. If you are using VirtualBox as a provider, you will need:
>
> - Vagrant 1.8.5 or later
> - VirtualBox 5.0.26 or later

For vagrant documentation, please refer to [vagrantup.com](https://www.vagrantup.com/)

### Docker

[](#docker)

If you develop or deploy using Docker, we provide configuration for you.

Prepare your development environment using [docker compose](https://docs.docker.com/compose/install/):

```
$ git clone https://github.com/laminas-api-tools/api-tools-skeleton
$ cd api-tools-skeleton
$ docker-compose build
# Install dependencies via composer, if you haven't already:
$ docker-compose run api-tools composer install
# Enable development mode:
$ docker-compose run api-tools composer development-enable
```

Start the container:

```
$ docker-compose up
```

Access Laminas API Tools from `http://localhost:8080/` or `http://:8080/` if on Windows or Mac.

You may also use the provided `Dockerfile` directly if desired.

Once installed, you can use the container to update dependencies:

```
$ docker-compose run api-tools composer update
```

Or to manipulate development mode:

```
$ docker-compose run api-tools composer development-enable
$ docker-compose run api-tools composer development-disable
$ docker-compose run api-tools composer development-status
```

QA Tools
--------

[](#qa-tools)

The skeleton ships with minimal QA tooling by default, including laminas/laminas-test. We supply basic tests for the shipped `Application\Controller\IndexController`.

We also ship with configuration for [phpcs](https://github.com/squizlabs/php_codesniffer). If you wish to add this QA tool, execute the following:

```
$ composer require --dev squizlabs/php_codesniffer
```

We provide aliases for each of these tools in the Composer configuration:

```
# Run CS checks:
$ composer cs-check
# Fix CS errors:
$ composer cs-fix
# Run PHPUnit tests:
$ composer test
```

###  Health Score

45

—

FairBetter than 93% of packages

Maintenance11

Infrequent updates — may be unmaintained

Popularity40

Moderate usage in the ecosystem

Community32

Small or concentrated contributor base

Maturity84

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 76.7% 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 ~21 days

Recently: every ~100 days

Total

63

Last Release

1041d ago

Major Versions

0.9.1 → 1.0.02019-12-31

0.9.1p1 → 1.0.0p12020-01-24

PHP version history (9 changes)0.7.0PHP &gt;=5.3.3

0.8.0PHP &gt;=5.4.8

0.9.0PHP &gt;=5.3.23

1.3.0PHP &gt;=5.5

1.3.2PHP ^5.5 || ^7.0

1.4.0PHP ^5.6 || ^7.0

1.6.0PHP ^7.3 || ~8.0.0

1.8.0PHP ^7.3 || ~8.0.0 || ~8.1.0

1.9.x-devPHP ~8.0.0 || ~8.1.0 || ~8.2.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/25943?v=4)[Matthew Weier O'Phinney](/maintainers/weierophinney)[@weierophinney](https://github.com/weierophinney)

![](https://avatars.githubusercontent.com/u/296074?v=4)[Zend Framework](/maintainers/zendframework)[@zendframework](https://github.com/zendframework)

---

Top Contributors

[![weierophinney](https://avatars.githubusercontent.com/u/25943?v=4)](https://github.com/weierophinney "weierophinney (373 commits)")[![ralphschindler](https://avatars.githubusercontent.com/u/76674?v=4)](https://github.com/ralphschindler "ralphschindler (25 commits)")[![michalbundyra](https://avatars.githubusercontent.com/u/7423207?v=4)](https://github.com/michalbundyra "michalbundyra (21 commits)")[![ezimuel](https://avatars.githubusercontent.com/u/475967?v=4)](https://github.com/ezimuel "ezimuel (17 commits)")[![boesing](https://avatars.githubusercontent.com/u/2189546?v=4)](https://github.com/boesing "boesing (9 commits)")[![Ocramius](https://avatars.githubusercontent.com/u/154256?v=4)](https://github.com/Ocramius "Ocramius (6 commits)")[![jeremiahsmall](https://avatars.githubusercontent.com/u/814871?v=4)](https://github.com/jeremiahsmall "jeremiahsmall (5 commits)")[![Rockstar04](https://avatars.githubusercontent.com/u/641721?v=4)](https://github.com/Rockstar04 "Rockstar04 (3 commits)")[![superrosko](https://avatars.githubusercontent.com/u/23222142?v=4)](https://github.com/superrosko "superrosko (2 commits)")[![intellix](https://avatars.githubusercontent.com/u/1162531?v=4)](https://github.com/intellix "intellix (2 commits)")[![stojanovicdusan](https://avatars.githubusercontent.com/u/5235947?v=4)](https://github.com/stojanovicdusan "stojanovicdusan (2 commits)")[![giannicic](https://avatars.githubusercontent.com/u/10560238?v=4)](https://github.com/giannicic "giannicic (2 commits)")[![laminas-bot](https://avatars.githubusercontent.com/u/68250880?v=4)](https://github.com/laminas-bot "laminas-bot (2 commits)")[![snapshotpl](https://avatars.githubusercontent.com/u/312655?v=4)](https://github.com/snapshotpl "snapshotpl (1 commits)")[![ThaDafinser](https://avatars.githubusercontent.com/u/533017?v=4)](https://github.com/ThaDafinser "ThaDafinser (1 commits)")[![tylkomat](https://avatars.githubusercontent.com/u/815915?v=4)](https://github.com/tylkomat "tylkomat (1 commits)")[![wdJer](https://avatars.githubusercontent.com/u/2951177?v=4)](https://github.com/wdJer "wdJer (1 commits)")[![marcelto](https://avatars.githubusercontent.com/u/3354672?v=4)](https://github.com/marcelto "marcelto (1 commits)")[![diego-sorribas](https://avatars.githubusercontent.com/u/16760271?v=4)](https://github.com/diego-sorribas "diego-sorribas (1 commits)")[![djnotes](https://avatars.githubusercontent.com/u/9320387?v=4)](https://github.com/djnotes "djnotes (1 commits)")

---

Tags

hacktoberfestapiframeworklaminasapi-tools

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/laminas-api-tools-api-tools-skeleton/health.svg)

```
[![Health](https://phpackages.com/badges/laminas-api-tools-api-tools-skeleton/health.svg)](https://phpackages.com/packages/laminas-api-tools-api-tools-skeleton)
```

###  Alternatives

[laminas-api-tools/api-tools

Laminas API Tools module for Laminas

371.7M10](/packages/laminas-api-tools-api-tools)[laminas-api-tools/api-tools-admin

Laminas API Tools Admin module

13794.3k5](/packages/laminas-api-tools-api-tools-admin)[laminas-api-tools/api-tools-oauth2

Laminas module for implementing an OAuth2 server

112.0M5](/packages/laminas-api-tools-api-tools-oauth2)[laminas/laminas-mvc-skeleton

Laminas MVC Skeleton Application

18088.0k](/packages/laminas-laminas-mvc-skeleton)

PHPackages © 2026

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