Setup new project (without Docker)

This section describes how you can manually setup your environment for developing with Glagol DSL.

Warning

Skip this chapter if you already have setup your project using Docker.

Install PHP, MySQL and a Web Server

You need PHP 7.1 and MySQL 5.7 at the very least. The choice of a web server is not crucial, both nginx and apache were tested and proven to work perfectly fine.

PHP DS extension

Glagol DSL data structures rely on the ds extension. The simplest way to install is using pecl:

$ sudo pecl install ds
$ sudo phpenmod ds

PHP Pdo extensions

Currently, Glagol DSL supports only the MySQL database as a possible ORM backend. Therefore, the pdo_mysql extension is required. On Ubuntu/Debian you can install the MySQL PDO driver by typing:

$ sudo apt-get install php-mysql

Alternatively, you can also install it using pecl:

$ sudo pecl install pdo pdo_mysql
$ sudo phpenmod pdo pdo_mysql

PHP mbstring extension

Lumen framework requires the mbstring PHP extension. On Ubuntu you can install it simply by typing:

$ sudo apt-get install php-mbstring

Or alternatively using pecl:

$ sudo pecl install mbstring
$ sudo phpenmod mbstring

Composer

Finally, you need to make sure that you have composer installed. On Ubuntu you can install it using the package manager:

$ sudo apt-get install composer

Hint

If you want to significantly speed-up your composer you might consider installing the global performance boost package hirak/prestissimo: composer global require hirak/prestissimo

Create a new project structure

Lets create a new project. For the purpose we need a new directory:

$ mkdir glagol-hello-world

Navigate inside it and create two sub-directories src and out:

$ cd glagol-hello-world
$ mkdir src
$ mkdir out

The src folder will host the Glagol *.g source files, and the out directory will be used for the compiled sources.

Attention

You need to have the Glagol DSL Server app running before you proceed. Remember, you can start the server app by simply running $ glagol-server daemon.

Next, create a new package by making a new directory within the src folder:

$ mkdir src/HelloWorld

At the end your directory structure should look like this:

.
├── out
└── src
    └── HelloWorld

Important

Make sure that your Web Server’s virtual host maps to out/public folder. This is where the index.php is landing and where the routing starts.

Next, you need to compile for first time! Simply run the compile command:

$ glagol compile

The output should be something like:

Successfully compiled glagol project

Install Composer dependencies

The final step is to install the PHP Composer packages:

$ composer install --prefer-dist -d out/

Hint

PHP compiled sources are generated in the ./out/ directory of your project’s root. Make sure to map your web server’s root to ./out/public directory.

Set environment variables

The final step is to create an ./out/.env file that will hold environment variables (such as app’s name and MySQL connection credentials). Here is an example contents:

APP_NAME="Glagol DSL Sandbox"
APP_ENV=local
APP_DEBUG=true
DB_HOST=localhost
DB_PASSWORD=123
DB_USERNAME=root
DB_DATABASE=glagol