diff --git a/Example/.gitignore b/Example/.gitignore
new file mode 100644
index 0000000..0bfe817
--- /dev/null
+++ b/Example/.gitignore
@@ -0,0 +1,2 @@
+vendor/*
+composer.lock
diff --git a/Example/Dockerfile b/Example/Dockerfile
new file mode 100644
index 0000000..8ad6520
--- /dev/null
+++ b/Example/Dockerfile
@@ -0,0 +1,15 @@
+FROM php:7.4-apache
+
+COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
+
+RUN \
+ pecl install xdebug && \
+ docker-php-ext-enable xdebug
+
+WORKDIR /var/www/html
+
+COPY . /var/www/html
+
+RUN \
+ cd Example && \
+ composer install
diff --git a/Example/composer.json b/Example/composer.json
new file mode 100644
index 0000000..66b9c1f
--- /dev/null
+++ b/Example/composer.json
@@ -0,0 +1,21 @@
+{
+ "name": "evolv/php-sdk-demo",
+ "type": "project",
+ "autoload": {
+ "psr-4": {
+ "Evolv\\PhpSdkDemo\\": "src/"
+ }
+ },
+ "repositories": [
+ {
+ "type": "path",
+ "url": "..",
+ "options": {
+ "symlink": true
+ }
+ }
+ ],
+ "require": {
+ "evolv/php-sdk": "@dev"
+ }
+}
diff --git a/Example/index.php b/Example/src/index.php
similarity index 99%
rename from Example/index.php
rename to Example/src/index.php
index 1e75860..f96d1ef 100644
--- a/Example/index.php
+++ b/Example/src/index.php
@@ -2,10 +2,11 @@
declare (strict_types=1);
-use Evolv\EvolvClient;
-
+# Must be invoked once at top-level for Composer
require_once __DIR__ . '/../vendor/autoload.php';
+use Evolv\EvolvClient;
+
function display($arr, $title = null)
{
if ($title) {
diff --git a/Example/pdp.php b/Example/src/pdp.php
similarity index 100%
rename from Example/pdp.php
rename to Example/src/pdp.php
diff --git a/Example/tpl-default.php b/Example/src/tpl-default.php
similarity index 100%
rename from Example/tpl-default.php
rename to Example/src/tpl-default.php
diff --git a/Example/tpl-layout1.php b/Example/src/tpl-layout1.php
similarity index 100%
rename from Example/tpl-layout1.php
rename to Example/src/tpl-layout1.php
diff --git a/Example/tpl-layout2.php b/Example/src/tpl-layout2.php
similarity index 100%
rename from Example/tpl-layout2.php
rename to Example/src/tpl-layout2.php
diff --git a/README.md b/README.md
index 292d08c..be69d9a 100644
--- a/README.md
+++ b/README.md
@@ -51,3 +51,9 @@ evolv/php-sdk
Evolv Delivers Autonomous Optimization Across Web & Mobile.
You can find out more by visiting: https://www.evolv.ai/
+
+## Local Development
+
+```shell
+docker-compose up -d
+```
diff --git a/docker-compose.yml b/docker-compose.yml
index 6dc4114..51c542c 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -3,9 +3,15 @@ version: '3.8'
services:
php-apache-environment:
container_name: php-sdk
- image: php:7.4-apache
+ build:
+ dockerfile: Example/Dockerfile
+ context: .
volumes:
- - ./:/var/www/html/
- - ./php.ini:/usr/local/etc/php/php.ini
+ - .:/var/www/html/
+# - /var/www/html/Example/vendor
+ - ./docker/apache/sites-enabled:/etc/apache2/sites-enabled
+# - ./php.ini:/usr/local/etc/php/php.ini
+ - ./docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+ - ./docker/php/conf.d/error_reporting.ini:/usr/local/etc/php/conf.d/error_reporting.ini
ports:
- 8000:80
diff --git a/docker/apache/sites-enabled/000-default.conf b/docker/apache/sites-enabled/000-default.conf
new file mode 100644
index 0000000..7afb4de
--- /dev/null
+++ b/docker/apache/sites-enabled/000-default.conf
@@ -0,0 +1,11 @@
+
+ ServerAdmin webmaster@localhost
+ DocumentRoot /var/www/html/Example/src
+ DirectoryIndex index.php
+
+
+ Options Indexes FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+
diff --git a/docker/php/conf.d/error_reporting.ini b/docker/php/conf.d/error_reporting.ini
new file mode 100644
index 0000000..7e566f4
--- /dev/null
+++ b/docker/php/conf.d/error_reporting.ini
@@ -0,0 +1 @@
+error_reporting=E_ALL
diff --git a/docker/php/conf.d/xdebug.ini b/docker/php/conf.d/xdebug.ini
new file mode 100644
index 0000000..9c37b9c
--- /dev/null
+++ b/docker/php/conf.d/xdebug.ini
@@ -0,0 +1,6 @@
+zend_extension=xdebug
+
+[xdebug]
+xdebug.mode=develop,debug
+xdebug.client_host=host.docker.internal
+xdebug.start_with_request=yes