connect-php

0.0.2 • Public • Published

connect-php Build Status

PHP middleware for https://github.com/senchalabs/connect

Disclaimer

This plugin is a very early stage, and was primarily designed to provide a better PHP integration with grunt-contrib-connect. So for now, it was only tested with Grunt on a rather basic test set.

Its main goal is to parse and execute .php files whenever a request to such a file is made.

Getting Started

Install the module with: npm install connect-php

Using it with Grunt

grunt-contrib-connect at the moment is very tight in it's execution and has no way to easily add another middleware to its execution stack as it was possible with grunt-connect. However, it is still possible to override the usually used middleware function. So, to just execute .php files we can easily set it up like this:

module.exports = function (grunt) {
    // show elapsed time at the end
    require('time-grunt')(grunt);
 
    // load all grunt tasks
    require('load-grunt-tasks')(grunt);
 
    //Add this to the beginning of your Gruntfile.js
    var phpMiddleware = require('connect-php');
 
    grunt.initConfig({
        ...
        connect: {
            options: {
                port: 9000,
                livereload: 35729,
                hostname: 'localhost',
                middleware: function(connect, options) {
                    // The directory where connect is executed
                    var directory = options.directory 
                      || options.base[options.base.length - 1];
                    // Return an array of all middlewares
                    return [
                        phpMiddleware(directory)
                    ]
                }
            },
            ...
        }
    });
};

To sneak in our middleware into grunt-contrib-connect's original middleware stack, we have to recreate a good chunk of their implementation. Add this to the middleware part described above:

...
middleware: function(connect, options) {
    var middlewares = [];
    var directory = options.directory || options.base[options.base.length - 1];
    if (!Array.isArray(options.base)) {
        options.base = [options.base];
    }
    
    // Magic happens here
    middlewares.push(phpMiddleware(directory));
 
    options.base.forEach(function(base) {
        // Serve static files.
        middlewares.push(connect.static(base));
    });
 
    // Make directory browse-able.
    middlewares.push(connect.directory(directory));
    return middlewares;
}
...

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

  • 0.0.1 - very early, initial release

Requirements

License

Copyright (c) 2013 Stefan Baumgartner. Licensed under the MIT license.

Dependents (1)

Package Sidebar

Install

npm i connect-php

Weekly Downloads

2

Version

0.0.2

License

none

Last publish

Collaborators

  • ddprrt