• This repository has been archived on 15/Mar/2019
  • Stars
    star
    208
  • Rank 189,015 (Top 4 %)
  • Language
    Shell
  • License
    MIT License
  • Created about 8 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🐳 🐘 πŸš€ Easily setup a PHP project with Docker

kickoff-docker-php's logo

kickoff-docker-php

A complete stack for your PHP project powered by Docker

Stable release: v2.5.1 Unstable release: master Travis CI


We're working on a lot of projects at TheCodingMachine and we needed a tool to easily start a PHP project with Docker. That's why we started working on the kickoff-docker-php stack with the following goals in mind:

  • One project = one technical environment
  • A local environment as close as possible to our distant environment
  • Switching quickly between our projects
  • Easy to use

Menu

Features

  • Cross-platform: Windows, Mac, Linux
  • A complete stack: NGINX, PHP-FPM 7.2, MySQL 5.7, phpMyAdmin, Redis, RabbitMQ
  • Centralized logging with Graylog
  • Automatic HTTPS on your local environment
  • A powerful reverse-proxy (Traefik) which can handle automatic HTTPS (via Let's Encrypt) on your production environment
  • Performance gains on Mac and Windows using Docker Sync or Docker for Mac's user-guided cache
  • Lightweight images, mostly based on Alpine
  • Easily configurable: disable the modules you don't need, set your own users and so on!
  • Customizable thanks to Orbit

And more! πŸ˜ƒ

Install

Download and install Docker (>= 17.06) for your platform.

Note: This project won't work using the legacy desktop solution, aka Docker Toolbox.

On Linux, you also have to install Docker compose (>= 1.14.0) as it does not come with by default. Also add your current user to the docker group and don't forget to logout/login from your current session.

Then download and install Orbit (>= 3.0.0), a tool for generating files from templates and running commands.

You may now fork this project and clone it or download the latest release from the releases page.

Optional install for performance gains with Docker Sync (Mac and Windows)

Download and install the latest release of Docker Sync.

Note: On Windows, it only works with Windows Subsystem for Linux.

Quick start

Once you've downloaded this project, move to the config folder and copy the file .env.blueprint and paste it to a file named .env.

Linux/Mac Windows
cp .env.blueprint .env copy .env.blueprint .env

Note: If you wish to enable Docker Sync, don't forget to set ENABLE_DOCKER_SYNC to true in your .env file.

In the same folder, open the file project.yml and set the following variables:

  • virtualhost.local with your own virtual host
  • name with your project name

Now open your hosts file...

Linux/Mac Windows
sudo nano /etc/hosts Run Notepad as administrator and open the file located at C:\Windows\System32\drivers\etc\hosts

...and add the following lines at the end of the file:

127.0.0.1   your-virtualhost.local
127.0.0.1   www.your-virtualhost.local
127.0.0.1   traefik.your-virtualhost.local
127.0.0.1   phpadmin.your-virtualhost.local
127.0.0.1   rabbitmq.your-virtualhost.local
127.0.0.1   graylog.your-virtualhost.local

Tip: Don't want to update your hosts file? Set virtualhost.local with your-virtualhost.127.0.0.1.xip.io in your project.yml file. Your applications will be available under *.your-virtualhost.127.0.0.1.xip.io/!

Good πŸ˜ƒ? We're now done with the configuration! 🀘

Last but not least, move to the root directory, shutdown your local Apache or anything which could use your 80 and 443 ports, and run:

orbit run kickoff

The installation might take some time, so go for a coffee break! β˜•

Once everything has been installed, open your favorite web browser and copy / paste https://www.your-virtualhost.local and check if everything is OK!

Orbit tasks

Note: You can use the -d flag to have a more detailed output.

Main tasks

Command Description
orbit run Displays available tasks.
orbit run kickoff Generates all configuration files, builds the NGINX and PHP-FPM images and starts the containers. It's a combo of build, proxy-up and up commands.
orbit run shutdown Stops all containers. It's a combo of down and proxy-down commands.
orbit run workspace Connects through ash to the PHP-FPM container. This is where you're able to run useful commands like composer and yarn.
orbit run mysql-cli Opens the MySQL cli as root. On environments <> local, it will ask you the MySQL root password.

Others tasks

Note: you should not use them, unless you know what you're doing!

Command Description
orbit run build Generates all configuration files and builds the NGINX and PHP-FPM images.
orbit run proxy-up Starts the Traefik container.
orbit run up Starts all containers without the Traefik container.
orbit run proxy-down Stops the Traefik container.
orbit run down Stops all containers without the Traefik container.

Project structure

β”œβ”€β”€ config  # Kickoff related configuration files
β”œβ”€β”€ modules # Modules related configuration files
└── app     # The source code of your PHP application

Only the configuration files of your modules and the application source code are directly mounted in the containers. The data of modules like MySQL are stored inside named volumes. You can see those named volumes by running docker volume ls command. They are named using the project name, your current environment and the considered module. If you want to locate those volumes on the host, run docker inspect {volume name} command.

Note: For now, the credentials will only be set the first time the Graylog, MySQL, RabbitMQ containers are launched. If you want to update them after, use the considered dashboard. You could also delete the named volumes, but proceed with caution: it will delete all your data.

Tip: Your app folder should be a git submodule.

Configuration

File Description
config/project.yml Your project configuration values.
config/modules.yml The cross-environments configuration values of your modules.
config/.env The sensitive and environment specific configuration values of your modules.
orbit.yml The Orbit's commands of your project.

Don't hesitate to take a look at those files, as they are provided with nice comments!

Note: If you need to update some values in those files, make sure you have stopped your containers using orbit run shutdown.

Modules

Toolbox

The Toolbox is a simple container which is used to:

  • Generates the self-signed certificate on your local environment
  • Generates the .htdigest file for authentication to the Traefik dashboard on environments <> local
  • Generates the SHA2 password and secret pepper for Graylog authentication
  • Checks if Graylog is ready to receive logs from others containers
  • Checks if others containers have been successfully started

Traefik

The Traefik container is used as a reverse-proxy: it's the entry door which will redirect clients requests to the correct frontend.

It provides a nice dashboard (https://traefik.your-virtualhost.local/) which requires an authentication on environments <> local.

HTTPS

On your local environment, the Toolbox container will automatically generate a self-signed certificate according to the virtual host specified in your project.yml file.

On others environment, we provided TRAEFIK_CERT_FILE_PATH and TRAEFIK_KEY_FILE_PATH variables in your .env file to let you specify the absolute path to your certificates. You may also customize the Traefik configuration located at modules/traefik/traefik.blueprint.toml with ACME configuration to enable automatic HTTPS.

How to enable automatic HTTPS on your production environment: https://gist.github.com/gulien/8fe9debbcb30d97091406a24ef5eea82

Configuration

Variable Location Description
virtualhost.* config/project.yml The virtual host to use according to your environments.
traefik.user config/modules.yml The Traefik user used for generating the .htdigest file. Only required for environments <> local.
TRAEFIK_PREFIX config/.env If true, your URLs will be prefixed with your current environment. This is useful if you wish to have many environments on the same host.
TRAEFIK_LOG_LEVEL config/.env Defines the log level of the Traefik container.
TRAEFIK_PASSWORD config/.env The password of the user defined in the modules.yml file. Only required for environments <> local.
TRAEFIK_CERT_FILE_PATH config/.env The .crt absolute file path. Only required for environments <> local.
TRAEFIK_KEY_FILE_PATH config/.env The .key absolute file path. Only required for environments <> local.

Graylog

The Graylog containers centralize the Docker's logs of the NGINX, PHP-FPM, MySQL, phpMyAdmin, Redis and RabbitMQ containers. It's actually composed of three containers: Elasticsearch, MongoDB and the Graylog server.

You may access the Graylog dashboard (https://graylog.your-virtualhost.local/) using the credentials provided in your configuration files.

Configuration

Variable Location Description
graylog.enable config/modules.yml If true, enables Graylog.
graylog.user config/modules.yml The Graylog root user.
GRAYLOG_PORT config/.env The port on which the Graylog server will receive logs from others containers.
GRAYLOG_PASSWORD config/.env The password of the user defined in the modules.yml file.
GRAYLOG_SERVER_JAVA_OPTS config/.env The Java options for the Graylog server.
GRAYLOG_ES_JAVA_OPTS config/.env The Java options for Elasticsearch.

NGINX

NGINX is the web server of your PHP application.

The NGINX configuration located at modules/nginx/conf.d/php-fpm.conf provides good security defaults. Still, you might have to update it according to the PHP framework you wish to use.

Example for a Symfony application: https://gist.github.com/gulien/64d8c94c5d0e294ac121ea810794757e.

PHP-FPM

The PHP-FPM container has many roles. First, it handles requests from the NGINX container to execute your PHP files. Then, it provides a complete set of tools to help you building your application. You can run them by connecting to it with the orbit run workspace command.

Your PHP application will be accessible under https://your-virtualhost.local/ and https://www.your-virtualhost.local/.

Installed PHP extensions

apcu, bcmath, gd, intl, mbstring, pdo_mysql, phpredis, opcache, soap, xdebug, yaml, zip and more!

You are able to find all installed PHP extensions by running php -m inside your workspace.

Xdebug

Xdebug is a tool for easily debugging your PHP code. We provided simple variables in your .env file as described below.

Example with PhpStorm: https://gist.github.com/gulien/d0933d8f90587a95cec5fd750da41b87.

Available tools

Composer - https://getcomposer.org/

Composer helps you declare, manage and install dependencies of PHP projects.

prestissimo - https://github.com/hirak/prestissimo

composer parallel install plugin.

npm - https://www.npmjs.com/

npm is the package manager for JavaScript and the world’s largest software registry.

yarn - https://yarnpkg.com/lang/en/

FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT

PHP Coding Standards Fixer - http://cs.sensiolabs.org/

The PHP Coding Standards Fixer tool fixes most issues in your code when you want to follow the PHP coding standards as defined in the PSR-1 and PSR-2 documents and many more.

Configuration

Variable Location Description
PHP_MEMORY_LIMIT config/.env Defines the PHP memory limit of the PHP-FPM container.
PHP_FPM_MEMORY_LIMIT config/.env Defines the PHP-FPM memory limit of the PHP-FPM container.
XDEBUG_ENABLED config/.env If true, enables Xdebug.
XDEBUG_REMOTE_HOST config/.env If Xdebug is enabled, set this variable with your local IP address.

MySQL

The MySQL container is the DBMS of this stack.

In your PHP-FPM container, the hostname of the MySQL DBMS is mysql. Also, just use the port 3306 and the credentials defined in the modules.yml and .env files.

There are also three ways to manage MySQL:

  • On local environment, you may access the phpMyAdmin dashboard (https://phpadmin.your-virtualhost.local/); you will automatically be connected as root
  • By running orbit run mysql-cli: it will open the MySQL cli and connect you as root. On environments <> local, it will ask you the MySQL root password
  • By mapping the container's port 3306 to a host port, you are able to use a more powerful tool like MySQL Workbench using 127.0.0.1 (or your server IP) as host and the port defined in the variable MYSQL_HOST_PORT_TO_MAP in your .env file

Note: On production environments, we strongly advise to not put the MySQL port on a public facing port. This should be used only in others environments.

Configuration

Variable Location Description
mysql.enable config/modules.yml If true, enables MySQL.
mysql.user config/modules.yml The MySQL user of your PHP application.
mysql.databases config/modules.yml List of the databases of your PHP application. If they do not exist, they will be created when the MySQL container starts. The previous user will have all privileges on these databases.
MYSQL_PASSWORD config/.env The password of the user defined in the modules.yml file.
MYSQL_ROOT_PASSWORD config/.env The MySQL root password.
MYSQL_ENABLE_PORTS_MAPPING config/.env If true, it will map the port 3306 of the MySQL container with the host port defined below.
MYSQL_HOST_PORT_TO_MAP config/.env The host port to map.

Redis

Redis is the cache store of this stack.

The hostname of Redis in your PHP-FPM container is redis. To configure Redis to be the cache handler of your PHP application, you should refer to the documentation provided by your PHP framework.

Note: You should not use predis, as phpredis is installed by default.

Configuration

Variable Location Description
redis.enable config/modules.yml If true, enables Redis.
REDIS_PASSWORD .env The auth used to access the Redis DBMS.

RabbitMQ

RabbitMQ is the message broker of this stack.

The hostname of RabbitMQ in your PHP-FPM container is rabbitmq. To configure RabbitMQ to be the message broker of your PHP application, you should refer to the documentation provided by your PHP framework.

You may access the RabbitMQ dashboard (https://rabbitmq.your-virtualhost.local/) using the credentials provided in your configuration files.

Configuration

Variable Location Description
rabbitmq.enable config/modules.yml If true, enables RabbitMQ.
rabbitmq.user config/modules.yml The RabbitMQ user of your PHP application.
RABBITMQ_PASSWORD config/.env The password of the user defined in the modules.yml file.

Advanced

Restart strategy

On your local environment, your containers will not restart automatically.

On others environments, if you have enable Graylog, they will also not restart automatically. Indeed, we have to check that Graylog is ready to receive logs from others containers before we start them. In your production environment, you should configure your host to restart in the right order your containers after Docker startup. Indeed, your host provider might restart your server from time to time. Of course, if Graylog is not enable, your containers have been configured to restart automatically. πŸ˜‰

Many environments on the same host

Let's say you want your staging and production environments to run on the same host. You have cloned two projects, one per environment.

First, check that you have the same virtual host on both environments.

Then, start your production environment by running orbit run kickoff.

Once done, move to the staging environment project folder, and update the following variables in your .env file:

  • TRAEFIK_PREFIX to true
  • GRAYLOG_PORT to another port than the one used by your production environment
  • If MYSQL_ENABLE_PORTS_MAPPING=true on both your environments, update MYSQL_HOST_PORT_TO_MAP in your staging environment to another port than the one used by your production environment

Reminder: On production environments, we strongly advise to not put the MySQL port on a public facing port. This should be used only in others environments.

Last but not least, start your staging environment by running orbit run build up.

Note: Don't run kickoff command, as we only want one Traefik container!

If your virtual host is my-awesome-project.com, your production applications will be available under *.my-awesome-project.com while your staging applications will be available under *-staging.my-awesome-project.com! 🀘

Contributing

Please read our contributing guidelines for instructions.

If you've found a security vulnerability, please e-mail directly: j dot neuhart dot thecodingmachine dot com. Provide enough information to reproduce the bug and make a patch!

Credits


Would you like to update this documentation ? Feel free to open an issue.

More Repositories

1

react-native-boilerplate

A React Native template for building solid applications πŸ™, using JavaScript πŸ’› or Typescript πŸ’™ (you choose).
TypeScript
4,775
star
2

safe

All PHP functions, rewritten to throw exceptions instead of returning false
PHP
2,360
star
3

docker-images-php

A set of PHP Docker images
HCL
774
star
4

graphqlite

Use PHP Attributes/Annotations to declare your GraphQL API
MDX
535
star
5

phpstan-strict-rules

A set of additional rules for PHPStan based on best practices followed at TheCodingMachine
PHP
273
star
6

symfony-vuejs

Source code of the tutorial "Building a single-page application with Symfony 4 and Vue.js"
PHP
178
star
7

tdbm

The Database Machine is a PHP ORM that requires no configuration. The object model is deduced from the database model.
PHP
119
star
8

nodejs-installer

An installer package that let's you install NodeJS and NPM as a Composer dependency.
PHP
108
star
9

safe8

All PHP functions, rewritten to throw exceptions instead of returning false, now for php8
PHP
106
star
10

gotenberg-php-client

PHP client for the Gotenberg API
PHP
104
star
11

symfony-boilerplate

An example of an application built with Symfony 5, GraphQL and Nuxt.js
PHP
103
star
12

discovery

Publish and discover assets in your PHP projects.
PHP
101
star
13

phpstan-safe-rule

A PHPStan rule to be used with the thecodingmachine/safe package
PHP
55
star
14

best-practices

This repository contains the files to generate the http://bestpractices.thecodingmachine.com website
Less
53
star
15

mouf

The Mouf PHP framework: an open-source PHP framework providing an easy way to download, install, use and reuse components, with a graphical user interface.
PHP
50
star
16

gotenberg-go-client

Go client for the Gotenberg API
Go
47
star
17

gitlab-registry-cleaner

A simple Docker image to be used in Gitlab CI to easily delete images in the Gitlab registry
Shell
44
star
18

packanalyst

Packanalyst is a service that let's you browse in any PHP class / interface / trait defined in Packagist
JavaScript
35
star
19

graphqlite-bundle

A Symfony bundle for thecodingmachine/graphqlite.
PHP
34
star
20

dbal-fluid-schema-builder

Build and modify your database schema using Doctrine DBAL and a fluid syntax.
PHP
25
star
21

symfony-middleware

This package provides a StackPHP middleware that can be used to use a Symfony application as a middleware (instead of an app)
PHP
23
star
22

html.widgets.statsgrid

This PHP package contains a HTML pivot table. You provide it with a data set and the list of columns and rows and it will display a nice pivot table.
PHP
22
star
23

magic-query

A very clever library to use SQL prepared statement with a variable number of parameters... and much more!
PHP
22
star
24

redux-toolkit-wrapper

Redux-toolkit wrapper used to write less code regarding classic CRUD operations.
TypeScript
19
star
25

rnb-plugin-typescript

This plugin allow thecodingmachine react-native-boilerplate πŸ™ users to translate the boilerplate from Javascript πŸ’› to Typescript πŸ’™
TypeScript
18
star
26

yaml-tools

A set of CLI tools to manipulate YAML files (merge, edit, etc...)
Python
18
star
27

symfony-psr15-bridge

A bridge between Symfony middlewares (StackPHP) and http-interop middlewares for converting Symfony Http abstractions to PSR-15 and back.
PHP
17
star
28

graphqlite-laravel

A Laravel service provider package to help you get started with GraphQLite in Laravel.
PHP
16
star
29

picotainer

A minimalist PHP dependency injection container compatible with ContainerInterop
PHP
15
star
30

deeployer

A tool to ease the creation of environments using docker-compose or Kubernetes
PHP
14
star
31

whoops-stackphp

This package contains a StackPHP middleware that catches all exceptions and redirects those to the Whoops error handling library.
PHP
14
star
32

graphql-controllers

Write your GraphQL queries in simple to write controllers (using webonix/graphql-php).
PHP
12
star
33

database.tdbm

The Database Machine is a PHP ORM that requires no configuration. The object model is deduced at runtime from the database model.
PHP
11
star
34

silex-middleware

This package provides a StackPHP middleware that can be used to plug a Silex application
PHP
11
star
35

docker-images-nodejs

A set of Node.js Docker images
Shell
10
star
36

yaco

YACO (Yet Another COmpiler) is a PHP tool that generates a PHP container based on entry definitions.
PHP
10
star
37

classname-mapper

Provides a way to find in which PHP files a class will be looked upon.
PHP
10
star
38

class-explorer

Find the list of all your PHP classes and more.
PHP
9
star
39

drupal

This Composer package is an installer that will download Drupal from the http://drupal.org website and unpack it at the root of your Composer project.
9
star
40

print.service

PDF, docx, html generator service of docx or twig template
PHP
8
star
41

map-optimizer

A tool to automatically optimize a Tiled map for usage in Phaser 3
JavaScript
8
star
42

funky

Write service providers easily using annotations
PHP
7
star
43

csrf-header-check-middleware

A PHP PSR-15 (http-interop) compliant middleware that defends your application against CSRF attacks.
PHP
7
star
44

interop.silex.di

This project is a very simple extension to the Silex microframework. It adds to Silex the capability to use any DI container (not only Pimple).
PHP
7
star
45

tdbm-bundle

A Symfony bundle for TDBM.
PHP
6
star
46

schema-analyzer

A package that offers utility tools to analyze database schemas (on top of Doctrine DBAL)
PHP
6
star
47

utils.session.optimistic-session-handler

Session handler that releases session lock quickly. Usefull for multiple ajax calls on the same page
PHP
6
star
48

metahydrator

A configurable implementation of mouf's Hydrator interface
PHP
6
star
49

workadventure-map-forumphp

A WorkAdventure map for AFUP's ForumPHP 2020 event
HTML
5
star
50

crystal-project

This package contains the everaldo icon set. This is a set of icons that can be used in any web application.
5
star
51

splash-router

A PSR-15 compliant router using annotations
PHP
5
star
52

graphqlite-symfony-validator-bridge

Adds support for Symfony Validator in GraphQLite
PHP
5
star
53

alias-container

This package contains a really minimalist dependency injection container that can be used to create aliases of instances in existing containers.
PHP
5
star
54

docker-images-mysql

MySQL container with top-notch developer experience
Shell
4
star
55

workadventure-php-community-map

A map for the PHP community on WorkAdventure
JavaScript
4
star
56

service-provider-bridge-bundle

This Symfony Bundle enables Symfony applications to use service providers as defined in container-interop/service-provider
PHP
4
star
57

rnb-toolbox

Toolbox to create amazing plugins for our react-native boilerplate. 🧰
TypeScript
3
star
58

utils.common.conditioninterface

This package contains one interface for condition, and a few classes that implement it. A condition is a class that possesses an "isOk" method. The condition returns true if the condition is met, and false otherwise.
PHP
3
star
59

fluid-hydrator

PHP
3
star
60

DBFaker

Easy test data in your database !
PHP
3
star
61

gitlab-hook-middleware

A PSR-15 middleware to handle Gitlab hooks
PHP
3
star
62

archive-installer

This is a simple installer that let's you create simple Composer packages that are actually downloading and extracting an archive from the web.
PHP
3
star
63

laravel-universal-service-provider

This bridge allows Laravel applications to use service providers as defined in container-interop/service-provider
PHP
3
star
64

tdbm-laravel

A Laravel service provider package to help you get started with TDBM in Laravel
PHP
3
star
65

middleware-list-universal-module

Cross-framework module providing a service containing a list of middlewares
PHP
3
star
66

prefixer-container

This package contains a really minimalist dependency injection container that acts as a proxy in front of a target container. Its goal is to prefix all instances names in the target container.
PHP
3
star
67

swift-twig-mail-template

This package contains a utility class to render Swift mail messages using Twig for templating
PHP
3
star
68

database.doctrine-orm-wrapper

This package contains wrapper classes that make Doctrine ORM easy to use in Mouf
PHP
3
star
69

mvc.bce

BCE is made to make your live easy. It will help you in building forms very quickly, handles form rendering, both client and server-side validation, and persistance.
PHP
3
star
70

mvc.splash-common

The Core part of Splash (an MVC framework). It is used by Splash itself, but also by Drusplash (the Splash wrapper for Drupal)
PHP
3
star
71

mvc.splash

A MVC framework deeply integrated with Mouf
PHP
2
star
72

kickoff-docker-php-images

Base images of kickoff-docker-php
Roff
2
star
73

gitlab_scrutinizer_hook_adapter

This project is an adapter between Gitlab web hooks and Scrutinizer post-receive hook triggers
PHP
2
star
74

tom-cli

A dedicated CLI for TheCodingMachine React-Native Boilerplate !
JavaScript
2
star
75

graphqlite-universal-service-provider

Cross-framework module for GraphQLite using container-interop/service-provider
PHP
2
star
76

gitlab-registry-api

Library to use the Gitlab registry api in php
PHP
2
star
77

easy-entity-reader

This Drupal 8 module helps developers access entity content.
PHP
2
star
78

tdbm-graphql

A class generator that will generate GraphQL types from your database schema (using thecodingmachine/graphqlite)
PHP
2
star
79

k8s-gitlabci

PHP
2
star
80

utils.log.psr.multi-logger

This package contains a PSR-3 compatible logger that wrap a set of loggers
PHP
2
star
81

cache-utils

Store file related cache items easily
PHP
2
star
82

tdbm-graphql-bundle

A Symfony bundle for thecodingmachine/tdbm-graphql.
PHP
2
star
83

jquery.tcm.monthpicker

The jQuery TCM Monthpicker is a highly configurable plugin that adds monthpicker functionality to your pages. You can customize the date format and language, restrict the selectable date ranges and add in buttons and other navigation options easily.
2
star
84

html.tags

This package contains a pure PHP object representation of HTML5 tags. There is one class for each existing HTML tag, and one getter/setter per attribute.
PHP
2
star
85

integration.joomla.moufla-joomlaplugin

This is the plugin that integrate Mouf in a Joomla environment. There are two other repositories that are linked to this one.
PHP
1
star
86

lazy-array

This package provides an array than can lazily instantiate the objects it contains.
PHP
1
star
87

service-provider-utils

This package contains a set of tools to work with container-interop's service-providers.
PHP
1
star
88

common-factories

This project provides utility factories that can be used directly in service providers complying with the container-interop/service-provider standard.
PHP
1
star
89

container-discovery

Allowing discovery of container objects through Puli
PHP
1
star
90

quiz-demo-joomla

PHP
1
star
91

drupal-stratigility-bridge

This Drupal 8 module provides a bridge to include PSR-15 middlewares through Stratigility.
PHP
1
star
92

tdbm-hydrator

A PHP hydrator allowing easy mapping between an array and an object.
PHP
1
star
93

yaml-definition-loader

Provides a loader that can convert YAML files to container definitions compatible with the definition-interop standard.
PHP
1
star
94

security.daos.tdbm

This package contains a basic user/role/right database model for TDBM.
PHP
1
star
95

html.widgets.fileuploaderwidget

This package contains an upload widget based on File Uploader plugin. This allows easy uploading of files in AJAX or HTML5.
PHP
1
star
96

utils.graphics.mouf-imagine

Wrapper around the Imagine library, that allows to associate a set of Imagine Filters to an URL, like the LiipImagineBundle does for Symfony
PHP
1
star
97

forumphp2016demo

The PHP demo made for Paris Forum PHP 2016
PHP
1
star
98

utils.graphics.mouf-image

Images handler interface for resizing, croping, or any other action
PHP
1
star
99

html.html_element

This package contains the HtmlElementInterface interface that can be used to output HTML on a page. It also features base classes implementing this interface.
PHP
1
star
100

interop.symfony.di

This package contains an implementation of the Symfony 2 DI container that can be extended using other DI containers (from other frameworks).
PHP
1
star