AutorÃa | Ultima modificación | Ver Log |
# laminas-mvc-skeleton## IntroductionThis is a skeleton application using the Laminas MVC layer and modulesystems. This application is meant to be used as a starting place for thoselooking to get their feet wet with Laminas MVC.## Installation using ComposerThe 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:```bash$ 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:```bash$ 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 networkinterfaces. You can then visit the site at http://localhost:8080/- which will bring up Zend Framework welcome page.**Note:** The built-in CLI server is *for development only*.## Development modeThe 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:```bash$ 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 applicationconfiguration in `config/autoload/development.local.php.dist`. Enablingdevelopment 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 willeither 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 TestsTo 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/):```bash$ composer require --dev laminas/laminas-test```Once testing support is present, you can run the tests using:```bash$ ./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 hasprecedence over the former when running tests, and is ignored by versioncontrol. (If you want to make the modifications permanent, edit the`phpunit.xml.dist` file.)## Using VagrantThis skeleton includes a `Vagrantfile` based on ubuntu 18.04 (bento box)with configured Apache2 and PHP 7.3. Start it up using:```bash$ vagrant up```Once built, you can also run composer within the box. For example, the followingwill install dependencies:```bash$ vagrant ssh -c 'composer install'```While this will update them:```bash$ vagrant ssh -c 'composer update'```While running, Vagrant maps your host port 8080 to port 80 on the virtualmachine; you can visit the site at http://localhost:8080/> ### Vagrant and VirtualBox>> 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 laterFor vagrant documentation, please refer to [vagrantup.com](https://www.vagrantup.com/)## Using docker-composeThis skeleton provides a `docker-compose.yml` for use with[docker-compose](https://docs.docker.com/compose/); ituses the `Dockerfile` provided as its base. Build and start the image using:```bash$ docker-compose up -d --build```At this point, you can visit http://localhost:8080 to see the site running.You can also run composer from the image. The container environment is named"laminas", so you will pass that value to `docker-compose run`:```bash$ docker-compose run laminas composer install```## Web server setup### Apache setupTo setup apache, setup a virtual host to point to the public/ directory of theproject and you should be ready to go! It should look something like below:```apache<VirtualHost *:80>ServerName laminasapp.localhostDocumentRoot /path/to/laminasapp/public<Directory /path/to/laminasapp/public>DirectoryIndex index.phpAllowOverride AllOrder allow,denyAllow from all<IfModule mod_authz_core.c>Require all granted</IfModule></Directory></VirtualHost>```### Nginx setupTo setup nginx, open your `/path/to/nginx/nginx.conf` and add an[include directive](http://nginx.org/en/docs/ngx_core_module.html#include) belowinto `http` block if it does not already exist:```nginxhttp {# ...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:```nginxserver {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:9000fastcgi_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 ToolsThe skeleton does not come with any QA tooling by default, but does ship withconfiguration 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:```bash$ composer require --dev phpunit/phpunit squizlabs/php_codesniffer zendframework/zend-test```We provide aliases for each of these tools in the Composer configuration:```bash# Run CS checks:$ composer cs-check# Fix CS errors:$ composer cs-fix# Run PHPUnit tests:$ composer test```