Logo

Serenata

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

Serenata is a gratis, libre and open source language server that provides code assistance for PHP. Combine it with any editor supporting language servers to get access to more advanced features when writing PHP code.

Autocompletion in action

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 in action

Code Navigation

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

Code lenses in action

Code Lenses

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 in action

Tooltips

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

Refactoring in action

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 in action

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 in action

Outline (Symbols)

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

Linting in action

Linting

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

See also the support table to see what language server protocol features are supported.

What?

Serenata is a standalone server, written in and for PHP that can be combined with editors supporting the language server protocol.

The screenshots above show Atom as an example, but Serenata has no direct relationship to it. Atom is just one of the many editors you can use with Serenata, and you can find more of them below.

Awesome! What do I need?

Atom

You can use the php-ide-serenata package, which will also handle installation of the server for you. It can also run in a container, some basic instructions:

   PHP on the host

  1. Install PHP 7.1 or higher
  2. Ensure the mbstring, xml, libxml, dom, openssl, tokenizer, json, and pdo_sqlite (with SQLite >= 3.7.11) extensions are enabled
  3. Open up Atom, install php-ide-serenata and follow the steps

   Docker or Podman

  1. Ensure Docker or Podman is running
  2. Open up Atom, install php-ide-serenata and follow the steps

Visual Studio Code / Code OSS / VSCodium

No published plugin is available yet, but there is a working prototype available that is looking for someone that wants to develop it further and publish it on the marketplace for public consumption.

Sublime Text

You can use the Serenata configuration for Sublime Text's LSP package.

Emacs

A configuration for lsp-mode for Emacs exists, which can be found here.

Other editors

If your editor already supports the language server protocol, integration should be straightforward. The above editors can serve as an example and successes have also been reported with a proprietary editor.

Feel free to drop by with questions if you're looking to integrate it into another editor!

Where can I learn more?

Please see our wiki.

Where is the code?

Right here, on GitLab.

Can I support you?

Serenata already sports a few advanced features, such as PhpStorm meta file support 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!