2017 © Pedro Peláez
 

library qengine-skeleton

Skeleton Application for ZF2

image

qengine/qengine-skeleton

Skeleton Application for ZF2

  • Sunday, September 6, 2015
  • by qengine
  • Repository
  • 1 Watchers
  • 0 Stars
  • 41 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

My Perfect ZF2 Skeleton

Introduction

This is my own ZF2 skeleton application using the ZF2 MVC layer and module systems. Purpose of this is to provide a starting point of building simple, but also complex and enterprise applications. This skeleton comes with Phing build script, that can be used in Continous Integration tools like Jenkins or Travis., (*1)

QEngine modules

Below are modules, that support building applications and point you to the PHP "best practices". * qengine/qengine-base - very early stage * qengine/qengine-locale, (*2)

Installation using Composer

The easiest way to create a new ZF2 project is to use Composer. If you don't have it already installed, then please install as per the documentation., (*3)

Create your new ZF2 project:, (*4)

composer create-project -n -sdev qengine/qengine-skeleton path/to/install

Installation using a tarball with a local Composer

If you don't have composer installed globally then another way to create a new ZF2 project is to download the tarball and install it:, (*5)

  1. Download the tarball, extract it and then install the dependencies with a locally installed Composer:, (*6)

    cd my/project/dir
    curl -#L https://github.com/zendframework/ZendSkeletonApplication/tarball/master | tar xz --strip-components=1
  2. Download composer into your proejct directory and install the dependencies:, (*7)

    curl -s https://getcomposer.org/installer | php
    php composer.phar install

If you don't have access to curl, then install Composer into your project as per the documentation., (*8)

Build script

Tu run build script, first you have to install Phing. Then in your project root directory run:, (*9)

phing 

What this script is doing: * Install composer dependecies * Check for PHP syntax errors in your source files * Run unit tests * Analise project for quality assurance (pdepend, phpmd, phpcpd, phpcs, phpdoc, phploc, phpcb), (*10)

Web server setup

Docker containers

This skeleton comes with basic script, that is used by docker-compose, to create a local and powerful development infrastructure. By default there is only one container enabled - Apache 2.4, PHP 5.6 (FastCGI), however this script comes with two others: MySQL and Jenkins containers., (*11)

I assume you are familiar with Docker and have already installed it (and boot2docker for OSX or Windows) together with Docker orchestration tool: docker-compose. Edit script file to meet your requirments (don't forget about data volumes). Add valid entry to your /etc/hosts file (If you're on OSX or Windows, you can retrieve your VM IP by running: shell boot2dock ip) Now you are ready to run:, (*12)

docker-compose up -d

If you're interested in my other Docker images visit https://hub.docker.com/u/jakubigla/., (*13)

PHP CLI server

The simplest way to get started if you are using PHP 5.4 or above is to start the internal PHP cli-server in the root directory:, (*14)

php -S 0.0.0.0:8080 -t public/ public/index.php

This will start the cli-server on port 8080, and bind it to all network interfaces., (*15)

Note: The built-in CLI server is for development only., (*16)

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:, (*17)

<VirtualHost *:80>
    ServerName zf2-app.localhost
    DocumentRoot /path/to/zf2-app/public
    <Directory /path/to/zf2-app/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
        <IfModule mod_authz_core.c>
        Require all granted
        </IfModule>
    </Directory>
</VirtualHost>

Nginx setup

To setup nginx, open your /path/to/nginx/nginx.conf and add an include directive below into http block if it does not already exist:, (*18)

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

Create a virtual host configuration file for your project under /path/to/nginx/sites-enabled/zf2-app.localhost.conf it should look something like below:, (*19)

server {
    listen       80;
    server_name  zf2-app.localhost;
    root         /path/to/zf2-app/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/zf2-app/public/index.php;
        include fastcgi_params;
    }
}

Restart the nginx, now you should be ready to go!, (*20)

The Versions