PHPackages                             nopoco/laminas-mvc-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. nopoco/laminas-mvc-skeleton

ActiveProject[Framework](/categories/framework)

nopoco/laminas-mvc-skeleton
===========================

Laminas MVC Skeleton Application

v2.1.0(3y ago)02BSD-3-ClausePHPPHP ~8.0.0 || ~8.1.0 || ~8.2.0

Since May 2Pushed 3y ago1 watchersCompare

[ Source](https://github.com/nopoco/laminas-mvc-skeleton)[ Packagist](https://packagist.org/packages/nopoco/laminas-mvc-skeleton)[ RSS](/packages/nopoco-laminas-mvc-skeleton/feed)WikiDiscussions 2.1.x Synced 1mo ago

READMEChangelog (1)Dependencies (4)Versions (2)Used By (0)

laminas-mvc-skeleton
====================

[](#laminas-mvc-skeleton)

> Removed political appeal incompatible with free software here. The original repository is at this [link](https://github.com/laminas/laminas-mvc-skeleton).

Introduction
------------

[](#introduction)

This is a skeleton application using the Laminas MVC layer and module systems. This application is meant to be used as a starting place for those looking to get their feet wet with Laminas MVC.

Installation using Composer
---------------------------

[](#installation-using-composer)

The easiest way to create a new Laminas MVC project is to use [Composer](https://getcomposer.org/). If you don't have it already installed, then please install as per the [documentation](https://getcomposer.org/doc/00-intro.md).

To create your new Laminas MVC project:

```
$ composer create-project -sdev laminas/laminas-mvc-skeleton path/to/install
```

Once installed, you can test it out immediately using PHP's built-in web server:

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

This will start the cli-server on port 8080, and bind it to all network interfaces. You can then visit the site at

- which will bring up Laminas MVC Skeleton welcome page.

**Note:** The built-in CLI server is *for development only*.

Development mode
----------------

[](#development-mode)

The skeleton ships with [laminas-development-mode](https://github.com/laminas/laminas-development-mode)by default, and provides three aliases for consuming the script it ships with:

```
$ composer development-enable  # enable development mode
$ composer development-disable # disable development mode
$ composer development-status  # whether or not development mode is enabled
```

You may provide development-only modules and bootstrap-level configuration in `config/development.config.php.dist`, and development-only application configuration in `config/autoload/development.local.php.dist`. Enabling development mode will copy these files to versions removing the `.dist` suffix, while disabling development mode will remove those copies.

Development mode is automatically enabled as part of the skeleton installation process. After making changes to one of the above-mentioned `.dist` configuration files you will either need to disable then enable development mode for the changes to take effect, or manually make matching updates to the `.dist`-less copies of those files.

Running Unit Tests
------------------

[](#running-unit-tests)

To run the supplied skeleton unit tests, you need to do one of the following:

- During initial project creation, select to install the MVC testing support.
- After initial project creation, install [laminas-test](https://docs.laminas.dev/laminas-test/):

    ```
    $ composer require --dev laminas/laminas-test
    ```

Once testing support is present, you can run the tests using:

```
$ ./vendor/bin/phpunit
```

If you need to make local modifications for the PHPUnit test setup, copy `phpunit.xml.dist` to `phpunit.xml` and edit the new file; the latter has precedence over the former when running tests, and is ignored by version control. (If you want to make the modifications permanent, edit the `phpunit.xml.dist` file.)

Running Psalm Static Analysis
-----------------------------

[](#running-psalm-static-analysis)

To run the supplied skeleton static analysis, you need to do one of the following: It is recommended to install the test components from laminas (laminas/laminas-test), as this is used in the tests supplied.

```
$ composer require --dev vimeo/psalm psalm/plugin-phpunit laminas/laminas-test
```

Once psalm support is present, you can run the static analysis using:

```
$ composer static-analysis
```

Using docker-compose
--------------------

[](#using-docker-compose)

This skeleton provides a `docker-compose.yml` for use with [docker-compose](https://docs.docker.com/compose/); it uses the provided `Dockerfile` to build a docker image for the `laminas` container created with `docker-compose`.

Build and start the image and container using:

```
$ docker-compose up -d --build
```

At this point, you can visit  to see the site running.

You can also run commands such as `composer` in the container. The container environment is named "laminas" so you will pass that value to `docker-compose run`:

```
$ docker-compose run laminas composer install
```

Some composer packages optionally use additional PHP extensions.
The Dockerfile contains several commented-out commands which enable some of the more popular php extensions. For example, to install `pdo-pgsql` support for `laminas/laminas-db`uncomment the lines:

```
# RUN apt-get install --yes libpq-dev \
#     && docker-php-ext-install pdo_pgsql
```

then re-run the `docker-compose up -d --build` line as above.

> You may also want to combine the various `apt-get` and `docker-php-ext-*`statements later to reduce the number of layers created by your image.

Web server setup
----------------

[](#web-server-setup)

### Apache setup

[](#apache-setup)

To setup apache, setup a virtual host to point to the public/ directory of the project and you should be ready to go! It should look something like below:

```

    ServerName laminasapp.localhost
    DocumentRoot /path/to/laminasapp/public

        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all

        Require all granted

```

### Nginx setup

[](#nginx-setup)

To setup nginx, open your `/path/to/nginx/nginx.conf` and add an [include directive](http://nginx.org/en/docs/ngx_core_module.html#include) below into `http` block if it does not already exist:

```
http {
    # ...
    include sites-enabled/*.conf;
}
```

Create a virtual host configuration file for your project under `/path/to/nginx/sites-enabled/laminasapp.localhost.conf`it should look something like below:

```
server {
    listen       80;
    server_name  laminasapp.localhost;
    root         /path/to/laminasapp/public;

    location / {
        index index.php;
        try_files $uri $uri/ @php;
    }

    location @php {
        # Pass the PHP requests to FastCGI server (php-fpm) on 127.0.0.1:9000
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME /path/to/laminasapp/public/index.php;
        include fastcgi_params;
    }
}
```

Restart the nginx, now you should be ready to go!

QA Tools
--------

[](#qa-tools)

The skeleton does not come with any QA tooling by default, but does ship with configuration for each of:

- [phpcs](https://github.com/squizlabs/php_codesniffer)
- [laminas-test](https://docs.laminas.dev/laminas-test/)
- [phpunit](https://phpunit.de)

Additionally, it comes with some basic tests for the shipped `Application\Controller\IndexController`.

If you want to add these QA tools, execute the following:

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

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

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity2

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor3

3 contributors hold 50%+ of commits

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 ~0 days

Total

2

Last Release

1106d ago

### Community

Maintainers

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

---

Top Contributors

[![Xerkus](https://avatars.githubusercontent.com/u/725842?v=4)](https://github.com/Xerkus "Xerkus (32 commits)")[![samsonasik](https://avatars.githubusercontent.com/u/459648?v=4)](https://github.com/samsonasik "samsonasik (25 commits)")[![michalbundyra](https://avatars.githubusercontent.com/u/7423207?v=4)](https://github.com/michalbundyra "michalbundyra (22 commits)")[![nusphere](https://avatars.githubusercontent.com/u/5822825?v=4)](https://github.com/nusphere "nusphere (12 commits)")[![laminas-bot](https://avatars.githubusercontent.com/u/68250880?v=4)](https://github.com/laminas-bot "laminas-bot (11 commits)")[![froschdesign](https://avatars.githubusercontent.com/u/103362?v=4)](https://github.com/froschdesign "froschdesign (9 commits)")[![TomHAnderson](https://avatars.githubusercontent.com/u/493920?v=4)](https://github.com/TomHAnderson "TomHAnderson (7 commits)")[![Ocramius](https://avatars.githubusercontent.com/u/154256?v=4)](https://github.com/Ocramius "Ocramius (6 commits)")[![renovate[bot]](https://avatars.githubusercontent.com/in/2740?v=4)](https://github.com/renovate[bot] "renovate[bot] (6 commits)")[![jarrettj](https://avatars.githubusercontent.com/u/777547?v=4)](https://github.com/jarrettj "jarrettj (5 commits)")[![ghostwriter](https://avatars.githubusercontent.com/u/9754361?v=4)](https://github.com/ghostwriter "ghostwriter (4 commits)")[![weierophinney](https://avatars.githubusercontent.com/u/25943?v=4)](https://github.com/weierophinney "weierophinney (4 commits)")[![rieschl](https://avatars.githubusercontent.com/u/3321556?v=4)](https://github.com/rieschl "rieschl (2 commits)")[![nopoco](https://avatars.githubusercontent.com/u/132326857?v=4)](https://github.com/nopoco "nopoco (1 commits)")[![DIReports](https://avatars.githubusercontent.com/u/36068145?v=4)](https://github.com/DIReports "DIReports (1 commits)")[![imonteiro](https://avatars.githubusercontent.com/u/3138089?v=4)](https://github.com/imonteiro "imonteiro (1 commits)")[![ittmann](https://avatars.githubusercontent.com/u/8256322?v=4)](https://github.com/ittmann "ittmann (1 commits)")[![Koen1999](https://avatars.githubusercontent.com/u/32361020?v=4)](https://github.com/Koen1999 "Koen1999 (1 commits)")[![alexivaylov](https://avatars.githubusercontent.com/u/1569877?v=4)](https://github.com/alexivaylov "alexivaylov (1 commits)")[![thalles](https://avatars.githubusercontent.com/u/2185023?v=4)](https://github.com/thalles "thalles (1 commits)")

---

Tags

frameworklaminasmvcSkeleton

### Embed Badge

![Health badge](/badges/nopoco-laminas-mvc-skeleton/health.svg)

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

###  Alternatives

[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)
