Serenata is a gratis, libre and open source server that performs static analysis on PHP codebases to provide code assistance, such as autocompletion, linting, code navigation and tooltips. It achieves its goal by speaking the language server protocol over sockets with its clients.
Serenata was previously known as "PHP Integrator".
Please see the wiki as well as the website, which contain more information for users, both developers looking to implement clients as well as programmers using the server via editors and IDEs.
Download the latest stable PHAR for your PHP version from the releases page.
composer create-project "serenata/serenata" serenata --prefer-dist --no-dev
You can find the latest unstable builds as PHAR by downloading the artifacts of the latest pipelines or simply install latest master through Composer or by pulling from Git.
Most users will simply want to run Serenata through their favorite editor or IDE. See the website for a list of available clients and how to install them.
If you are writing a new client, please read the following sections.
php -d memory_limit=1024M distribution-7.x.phar --uri=tcp:https://127.0.0.1:11111
Where x
is the PHP version you downloaded the PHAR for.
php -d memory_limit=1024M <Serenata folder>/bin/console --uri=tcp:https://127.0.0.1:11111
You can select any port you desire, as long as it is not in use on your system.
127.0.0.1
will run on localhost
, which means the server will only be reachable from your local machine. This is usually what you want.
You can use other IP addresses such as 0.0.0.0
to make the server reachable across the network or inside a (e.g. Docker) container. (The usual security lecture applies here, as anyone in the network can then connect to the server and request information about your codebase.)
If you want to make the server part of your (existing) project and use the classes contained inside it for your own purposes:
composer require "serenata/serenata"
Note that the server was designed primarily as an application and not as a library. However, it is still very much possible to instantiate the classes you need yourself.
You may also be interested in other libraries that are part of the Serenata suite. In the future, more code may be split from the server into proper, separate libraries.
As this project is inherently large in scope, there is a lot of potential and a lot of areas to work in, so contributions are most welcome! Take a look at our contribution guide.