.. | ||
img | ||
config.el | ||
funcs.el | ||
layers.el | ||
packages.el | ||
README.org |
PHP layer
Description
This layer adds PHP language support to Spacemacs.
Features:
- Edit PHP files using php-mode
- Edit Drupal files
- Complete and jump to define with company-php
- Run tests with PHPUnit
- Reformat code with PHP CBF
- Support for the Language Server Protocol (experimental)
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.
Setting the backend
To activate the backend set the layer variable php-backend
:
(php :variables php-backend 'lsp)
Backend
Language Server Protocol
lsp-mode
currently supports two lsp backends for php. When both are installed,
the former takes priority over the latter:
intelephense
nmp install -g intelephense
You can find further information on the project's website and GitHub page.
php-language-server
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.
Key bindings
Key binding | Description |
---|---|
SPC m g g |
jump to define at point |
C-t |
jump back |
Usage
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:
-
Run the following
cd /root/of/project touch .ac-php-conf.json
- 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:
.projectile
vendor/autoload.php
the necessary configuration file (.ac-php-conf.json
) will be created automatically
if it does not exist.