Logo

Serenata

Gratis, libre and open source server providing code assistance for PHP

Serenata is a gratis, libre and open source server that provides code assistance for PHP. It can be integrated into any editor and is already integrated into the Atom editor via the php-ide-serenata package.

Autocompletion

Get relevant suggestions for class members, available functions and constants, local variables and more, enriched with additional information such as deprecation statuses and summaries.

Code navigation

Travel effortlessly to the relevant location of method definitions, classes, interfaces, and other structural elements in your code base.

Annotations

See additional helpful markers, such as properties overriding parent properties or methods implementing interface methods.

Interacting with them will take you to the mentioned element.

Tooltips

View extended documentation at a glance. Think method parameter descriptions, return type descriptions and thrown exceptions.

Refactoring

Quickly perform repetitive and automatable tasks, such as generating getters and setters, generating constructors, overriding parent methods or adding stubs for required interface methods.

Signature help

What arguments did that function need again? Pop open a tooltip with the expected arguments, with their documentation, to lift the confusion.

Outline (symbols)

Glance at a bird's-eye view of the code in any file and jump between them quickly.

Linting

Get notified of problems with your code early on to spend less time switching between testing a running version and your code.

What is it exactly?

Serenata is the standalone server, written in PHP, and php-ide-serenata is a package or plug-in written in JavaScript that integrates it in the Atom editor. The PHP server is thus separate and usable by other editors, and is installed by the Atom package automatically to make the process of installing it as painless as possible.

To put this more plainly: Serenata itself has no direct relationship to the Atom editor. The php-ide-serenata package mentioned here is just an example of a plug-in that allows using Serenata with an editor. Anyone can create a similar plug-in to plug Serenata into another editor.

Awesome! What do I need?

Atom

   PHP on the host

  1. Install PHP 7.1 or higher
  2. In php.ini, enable the mbstring, openssl and pdo_sqlite (with SQLite >= 3.7.11) extensions
    • You may also need curl, xml, libxml and dom for the installation itself
  3. Open up Atom, install php-ide-serenata and follow the steps
  4. Save your project with Project Manager
  5. Click Packages → Serenata → Set Up Current Project

   Docker

  1. Ensure Docker is running
  2. Open up Atom, install php-ide-serenata and follow the steps
  3. Save your project with Project Manager
  4. Click Packages → Serenata → Set Up Current Project

Other editors

Unfortunately, no other editors support Serenata yet. If you're interested in developing a client for it, feel free to drop by in the issue tracker with questions.

We're also hard at work rewriting parts of Serenata to adhere to the Language Server Protocol. We're not compliant yet, but Serenata is already very similar in its operation.

Where can I get more information?

For Serenata, you can also take a look at our wiki.

php-ide-serenata also has a wiki with relevant information pertaining to Atom in particular.

Where is the code?

The server is on GitLab and the Atom package on GitHub.

Can I support you?

Serenata already sports a few advanced features, such as PhpStorm meta file support and refactoring functionalties and provides a suitable solution for users looking for a free, gratis as well as libre, competitor to existing alternatives. I believe it can become the de facto free and competitive language server for PHP with the support of the community.

At the time of writing I'm the sole maintainer of this large project and work exclusively in my spare time to achieve this goal, so any donation is viewed as an appreciation of my work and a motivator to continue my efforts.

Ways you can sponsor:

If you decide to become a sponsor: thank you!