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.
The easiest way to create a new Laminas MVC project is to use Composer. If you don't have it already installed, then please install as per the documentation.
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 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 http://localhost:8080/
- which will bring up Laminas MVC Skeleton welcome page.
Note: The built-in CLI server is for development only.
The skeleton ships with 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.
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:
$ 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.)
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
This skeleton includes a Vagrantfile
based on ubuntu 18.04 (bento box)
with configured Apache2 and PHP 7.3. Start it up using:
$ vagrant up
Once built, you can also run composer within the box. For example, the following will install dependencies:
$ vagrant ssh -c 'composer install'
While this will update them:
$ vagrant ssh -c 'composer update'
While running, Vagrant maps your host port 8080 to port 80 on the virtual machine; you can visit the site at http://localhost:8080/
The vagrant image is based on bento/ubuntu-18.04. If you are using VirtualBox as a provider, you will need:
- Vagrant 2.2.6 or later
- VirtualBox 6.0.14 or later
For vagrant documentation, please refer to vagrantup.com
This skeleton provides a docker-compose.yml
for use with
docker-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 http://localhost:8080 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
anddocker-php-ext-*
statements later to reduce the number of layers created by your image.
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:
<VirtualHost *:80>
ServerName laminasapp.localhost
DocumentRoot /path/to/laminasapp/public
<Directory /path/to/laminasapp/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</Directory>
</VirtualHost>
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:
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!
The skeleton does not come with any QA tooling by default, but does ship with configuration for each of:
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