PHPackages                             stagem/zf-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. stagem/zf-skeleton

ActiveProject

stagem/zf-skeleton
==================

Stagem Skeleton Application based on Zend Framework Middleware

3161PHP

Since Apr 13Pushed 7y ago3 watchersCompare

[ Source](https://github.com/stagemteam/zf-skeleton)[ Packagist](https://packagist.org/packages/stagem/zf-skeleton)[ RSS](/packages/stagem-zf-skeleton/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

Stagem Skeleton Application
===========================

[](#stagem-skeleton-application)

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

[](#introduction)

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

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

[](#installation-using-composer)

The easiest way to create a new Zend Framework 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 Zend Framework project:

```
$ composer create-project -sdev stagem/zf-skeleton path/to/install
$ composer update
```

Post installation process
-------------------------

[](#post-installation-process)

1. Create database and create/edit `config/parameters.local.php` with next configuration

```
return [
    'db' => [
        'database' => 'your_database_name',
        'username' => 'your_user_name',
        'password' => 'your_secret_password',
        'hostname' => '127.0.0.1',
        'port' => 3306,
        'charset' => 'utf8mb4',
        'collate' => 'utf8mb4_unicode_ci',
    ],
];
```

2. Create directory for assets (js, css, media)

```
$ mkdir -p public/assets
```

3. Prepare Migrations' diff and execute them

```
$ mkdir -p data/DoctrineORMModule/Migrations
$ php public/index.php migrations:diff
$ php public/index.php migrations:migrate
```

4. Prepare project's Entities

```
$ php public/index.php entity sync
```

5. Prepare admin user

```
$ cp vendor/popov/zfc-user/data/Version20180404060817.php data/DoctrineORMModule/Migrations/
$ php public/index.php migrations:execute --up 20180404060817
```

After execution, console shows next output, it's normal

```
...
Migration 20180404060817 was executed but did not result in any SQL statements.
...
```

You can access to administrator area with `http://localhost/admin`

**login**: ****

**password**: **123456**

> Notice. Don't forget change default login and password for security reason.

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/ public/index.php
# OR use the composer alias:
$ composer run --timeout 0 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 Zend Framework welcome page.

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

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

[](#development-mode)

The skeleton ships with [zf-development-mode](https://github.com/zfcampus/zf-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.

Admin Configuration
-------------------

[](#admin-configuration)

... ...

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 [zend-test](https://zendframework.github.io/zend-test/):

    ```
    $ composer require --dev zendframework/zend-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.)

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 zfapp.localhost
    DocumentRoot /path/to/zfapp/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/zfapp.localhost.conf`it should look something like below:

```
server {
    listen       80;
    server_name  zfapp.localhost;
    root         /path/to/zfapp/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/zfapp/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)
- [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 phpunit/phpunit squizlabs/php_codesniffer zendframework/zend-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

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 56.5% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/7dbdbd3abed25e11e97a69bc611daa3fe33ad5d1805f2fb32d491c888c4dfb51?d=identicon)[Serhii Popov](/maintainers/Serhii%20Popov)

---

Top Contributors

[![popovserhii](https://avatars.githubusercontent.com/u/1991183?v=4)](https://github.com/popovserhii "popovserhii (13 commits)")[![stagemteam](https://avatars.githubusercontent.com/u/37902825?v=4)](https://github.com/stagemteam "stagemteam (10 commits)")

### Embed Badge

![Health badge](/badges/stagem-zf-skeleton/health.svg)

```
[![Health](https://phpackages.com/badges/stagem-zf-skeleton/health.svg)](https://phpackages.com/packages/stagem-zf-skeleton)
```

PHPackages © 2026

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