RESTful API with Laravel

Resfull API with laravel

Watching this course I was more interested into REST api`s best practices and standards like HATEOAS implementation. I`v got understanding what HATEOAS is, and how it could be used. Also learnt again about oAuth authentification methods, scopes and so on. I consider very valuable information was about improving code base adding transformation layer.

Read more about transformation layer and it`s benefits:
http://fractal.thephpleague.com/

PhpStorm keyboard shortcuts you cannot miss

When you develop on your IDE (in our case PhpStorm) is very handy to know at least base keyboard shortcuts and save your time. Personally I’m trying to avoid using a mouse and I feel it’s more funny and professional to work without it.

You cannot miss those commands:
https://www.jetbrains.com/help/phpstorm/2016.3/keyboard-shortcuts-you-cannot-miss.html

Full keymap you can find in PhpStorm -> Help -> Keymap Reference, or directly here:
ReferenceCard

Linux install oracle instant client + PHP PDO_OCI library

Download appropriate oracle instant client
(base and sdk packages important!)

instantclient-basic-linux.x64-11.2.0.4.0.zip
instantclient-sdk-linux.x64-11.2.0.4.0.zip

 Extract those files in a directory

/opt/instantclient_11_2

Set oracle home variable

export ORACLE_HOME=/opt/instantclient_11_2/

Create symlinks for libraries

ln -s /opt/instantclient_11_2/libclntsh.so.11.1 /opt/instantclient_11_2/libclntsh.so
ln -s /opt/instantclient_11_2/libocci.so.11.1 /opt/instantclient_11_2/libocci.so
ln -s /opt/instantclient_11_2/ /opt/instantclient_11_2/lib

Install PDO_OCI
If you already have php installed, you can compile only the PDO_OCI from PHP source. (Do not install with pecl because it’s deprecated)

  • Download the PHP source with same version that you have installed
  • Extract
  • Change to directory php-YOUR-VERSION/ext/pdo_oci

Run commands to compile PDO_OCI

phpize
./configure --with-pdo-oci=instantclient,/opt/instantclient_11_2,11.2
make && make install
echo "extension=pdo_oci.so" > /etc/php.d/pdo_oci.ini

Restart web server
service httpd restart

Perfect code, does it exist?

Hey, I was thinking about a code that we write and how good it is. As developers we always have to struggle with deadlines and business changes. Sometimes we just have to do the job and then we don’t write such a clear code.

The problem is that there aren’t any boundaries in perfection and our code won’t be perfect after many years when new technologies come. I’m not trying to say that we shouldn’t use best practices and write a clean code, but we just have to do the job and maybe correct some places in the future when we have to deal with them.

In the end I would like to say: “Working application is more valuable than a perfect code”

Using docker with Symfony

Hi fellas, in this post I’d like to share an example how I use docker with Symfony. Docker is good tool for web developers, and there are a lot of articles about it, but how it should be used with symfony (or other framework)? I’m going to show it below:

First we need to install docker, and docker-compose (for easier containers management). You can read more about docker technology on their official website.

Create docker folder to store php / nginx settings and logs. Also I was needed custom php extensions that’s why I created php-fpm folder with Dockerfile.

Create docker-compose.yml file in your project root directory

elasticsearch:
  image: elasticsearch:latest
  command: elasticsearch -Des.network.host=0.0.0.0
  ports:
    - "9200:9200"
    - "9300:9300"

mysql:
  image: mariadb
  ports:
    - "3306:3306"
  environment:
      MYSQL_ROOT_PASSWORD: admin

phpfpm:
  image: shar/php71
  ports:
    - "9000:9000"
  volumes:
    - ./:/usr/share/nginx/html
    - ./docker/config/php.ini:/usr/local/etc/php/php.ini
  links:
    - mysql
    - elasticsearch

nginx:
  image: tutum/nginx
  ports:
    - "80:80"
  links:
    - phpfpm
  volumes_from:
    - phpfpm
  volumes:
    - ./docker/config/default.conf:/etc/nginx/sites-available/default
    - ./docker/config/default.conf:/etc/nginx/sites-enabled/default
    - ./docker/logs/nginx-error.log:/var/log/nginx/error.log
    - ./docker/logs/nginx-access.log:/var/log/nginx/access.log

At the end build your image if you need and run in terminal “docker-compose up -d”, it will create containers and loads it.

You can find full example of using docker with symfony:
https://github.com/emptyhand/symfony-boilerplate