PHP Integrator

PHP code analysis and utilities for the Atom editor

PHP Integrator is an open-source project that provides code analysis and utilities for PHP projects. It consists of a set of packages for the Atom editor, backed by a socket server that performs the heavy lifting, integrating a powerful development environment inside your text editor.


One of the most useful features in a programmer's toolbox is autocompletion, which suggests:

  • Relevant object class members
  • Global functions and constants
  • Local variables
  • And more

View the source

Code Navigation / Goto Definition

Code navigation allows you to effortlessly travel through your codebase by clicking the names of method calls, classes, interfaces, and other structural elements.

Navigating will immediately take you to the relevant location in your code base.


Annotations provide you with relevant information about your code, such as that a parent property is being overridden or an interface method is being implemented.

As an added bonus, clicking them will take you to the related element, whenever possible.

View the source


Tooltips display documentation for structural elements. Think extended docblock descriptions, method parameter descriptions, return type descriptions and exceptions thrown.


Refactoring is the component that has the most potential. Features currently include:

  • Generating constructors
  • Overriding existing methods
  • Getter and setter generation
  • Stubbing interface methods and abstract methods

View the source

Call Tips / Signature Help

Call tips are much like tooltips, but differ only in that they display items directly related to function or method calls, such as their expected parameters with their types and default values.


The list wouldn't be complete without a way to highlight errors before stumbling upon them whilst running the code. Finding nonexistent class names, docblock issues and missing global functions are all included in this process.


Awesome! What do I need?

To run, you will need at least:

The following modules aren't directly used, but they may be required for installation in Atom via Composer or by dependencies:

* Still running PHP 5.6 or PHP 7.0? Look for the Atom packages suffixed with the text -legacy-php56, such as php-integrator-base-legacy-php56. These are unmaintained, but may provide a stopgap until you are able to update.

How do I make it work?

In a nutshell:

  1. Install PHP 7.1 or higher.
  2. In php.ini, enable the extensions mbstring, openssl and sqlite (the PDO variant).
  3. In Atom editor, install the base package and its dependencies.
  4. If necessary, give the path to your PHP binary in Settings → Packages → php-integrator-base Settings → Core.
  5. Restart Atom and allow the base package to install the core.
  6. Add your project in Project Manager and set it up.

Wait, now I'm confused, what is it really?

At the moment, PHP Integrator itself consists of a set of Atom packages written in CoffeeScript, backed by a socket server written in PHP. The PHP server is separate from the Atom packages, but is installed automatically to make the process of installing it as painless as possible for Atom users.

Various additional functionalities, such as autocompletion and refactoring, can be installed as separate Atom packages as well. These packages interface with the base package via a CoffeeScript service. Most of the heavy lifting, such as indexing, analyzing types and static analysis is done by the PHP server.

Is it really exclusive to Atom?

The packages and CoffeeScript parts are dependent on Atom, but the PHP server, which does the heavy lifting, is not dependent on Atom at all. The PHP server was originally part of the base Atom package, but has been split off into a separate repository for reuse.

What about making it a language server?

The Language Server Protocol has gathered some interest of late. Currently the core is not a compliant language server, but it already is a socket server using JSON-RPC for communication. Becoming compliant with the protocol is on the roadmap and would make the core much more reusable for other editors.

Where is the code?

Right here on GitHub, for the packages, and right here on GitLab, for the core.

GPLv3 Logo

If you think this project deserves it, sending me some coffee beans is most appreciated!