Skip to content

jon-acker/mink-legacy-driver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mink-legacy-driver

This project aims to provide a bridge between Mink and legacy apps. In general terms, legacy apps are not written with the best practices in mind or they are too old to support them.

License Build Status SensioLabsInsight

Why?

Legacy apps are hard to maintain mainly because of the lack of tests or because of very slow and painful tests. This situation produces fear to change as the side effects are unknown. In addition to this, legacy apps use to suffer from the following situations:

  • No usage of composer autoload.
  • Rely on PHP superglobals (like $_GET, $_POST, $_SERVER, etc).
  • Having many frontend controllers.
  • Usage of exit/die to abruptly finish the request.

Installation

Install with:

$ composer require --dev carlosv2/mink-legacy-driver

Usage

Set up your behat.yml file as follows:

default:
  extensions:
    carlosV2\LegacyDriver\Extension: ~
    Behat\MinkExtension:
      sessions:
        default:
          legacy:
            environment: <array>
            controller: <string|array>
            document_root: <string>
            bootstrap: <string|array>

Where:

  • environment: Key/value array containing the environment variables. For example:

    environment:
      variable: value
      env: prod
  • controller: Location of the frontend controller. For example:

    controller: path/to/the/controller.php

    Alternatively you can supply an array of frontend controllers. For example:

    controller:
      - path: /uri/to/match
        file: path/to/the/uri/to/match.php
      - path: /uri/to/another
        file: another/path/to/match.php    

    The controllers key configures the symfony/routing component underneath. As a result, you can also add the methods and requirements keys. For example:

    controller:
      - path: /item/{id}
        file: process_item.php
        methods: ["GET", "PUT"]
        requirements:
          id: \d+
  • document_root: Location of the document root. For example:

    document_root: path/to/the/document/root/
  • bootstrap: Location of the bootstrap file to execute before every request. For example:

    bootstrap: path/to/the/bootstrap/file.php

    Alternatively you can supply multiple files to be executed before every request. For example:

    bootstrap:
      - path/to/the/bootstrap/file.php
      - another/path/to/bootstrap.php

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published