This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/layers/+lang/php
smile13241324 bfce0f2a7d [php] Revise documentation
Describe the various backend choices in more detail.
Move project specific setup for non lsp server to the right section.
2019-09-17 19:10:26 +02:00
..
img Use + instead of ! for layer categories 2015-09-11 00:13:51 -04:00
config.el [php] Enable experimental lsp support 2019-09-17 12:53:43 +02:00
funcs.el [php] Enable experimental lsp support 2019-09-17 12:53:43 +02:00
layers.el [php] Make layer depend on LSP layer if lsp backend is activated 2019-09-17 13:03:01 +02:00
packages.el [php] Enable experimental lsp support 2019-09-17 12:53:43 +02:00
README.org [php] Revise documentation 2019-09-17 19:10:26 +02:00

PHP layer

/TakeV/spacemacs/media/commit/6de34e8b2d0abc54844329bb752d5bfad1bee702/layers/+lang/php/img/php.png

Description

This layer adds PHP language support to Spacemacs.

Features:

The gtags layer is recommended to benefit from better eldoc and helm-gtags.

Install

Layer

To use this configuration layer, add it to your ~/.spacemacs. You will need to add php to the existing dotspacemacs-configuration-layers list in this file.

Backends

For php you have the choice between a set of possible backends with different setup instructions and different capabilities.

intelephense

This is the recommended LSP server solution. To activate it set the layer variable php-backend:

  (php :variables php-backend 'lsp)

and install the npm server with:

  npm install -g intelephense

You can find further information on the project's website and GitHub page.

php-language-server

This is an alternative LSP server implementation working on PHP basis rather than nodejs. To activate it set the layer variable php-backend like for the intelephense backend and install the server via composer:

  composer require felixfbecker/language-server
  composer run-script --working-dir=vendor/felixfbecker/language-server parse-stubs

You can find further information on the project's GitHub page.

ac-php-core

This is a non server solution working entirely from an elisp package. This requires no installation of external services but also delivers the least amount of IDE like integrations with spacemacs.

To activate it just don't set the variable php-backend in your dotfile. Remember that additional setup instructions are necessary on a per project basis which you can find below.

Setup

Because of the way that the ac-php-core package works, there are a couple of simple initialization tasks which must occur to get the completion working as it should. On any new project make sure to perform the following initialization tasks:

  1. Run the following

      cd /root/of/project
      touch .ac-php-conf.json
  2. Inside of spacemacs run: = ac-php-remake-tags =

The .ac-php-conf.json file is required to enable auto-completion. When you run ac-php-remake-tags and your .ac-php-conf.json file is empty the default configuration will be used and inserted in the file.

If your project contains the following files at the root folder:

  1. .projectile
  2. vendor/autoload.php

the necessary configuration file (.ac-php-conf.json) will be created automatically if it does not exist.

Key bindings

Key binding Description
SPC m g g jump to define at point
C-t jump back