-
Notifications
You must be signed in to change notification settings - Fork 119
Integrate commands into Emacs
This page describes how to execute PHP related commands from Emacs.
An environment variable called PATH is important to make the command executable available.
UNIX systems (including many Linux, BSD, macOS) can add PATH in the user's shell configuration file.
In many cases, the PHP runtime can be installed system-wide, but in order to use globally installed tools by Composer, it is necessary to set the PATH.
The following code is an example to add ~/local/bin in your home directory as the installation directory for executable files.
PATH=$HOME/local/bin:$PATHAdding this setting is just called "Add (a directory) to path".
For example files .profile, .bash_profile, .zshenv, etc. are known as files that set environment variables, but which file to set depends on the shell you are using and how you are using it. In most cases both .bashrc and .bash_profile will work if you're using Bash, please follow your consistency.
- If you start Emacs from shell in terminal, all environment variables are automatically taken over.
- If you start GUI Emacs without a shell, consider exec-path-from-shell.
- If you're using Doom Emacs you don't even need anything in the GUI as it's integrated with the ability to automatically inherit PATH from the shell.
PHP Mode does not depends on php commands, but having PHP installed on your system enables many useful features.
PHP can be easily installed by many OS package managers (apt-get, yum, brew, pacman, etc.).
If you want to explicitly use the execution other than PHP installed system-wide, add that directory to PATH.
If you want to explicitly specify the PHP executable regardless of $PATH, add the following settings to init.el.
(custom-set-variable '(php-executable "/path/to/php"))Note that this variable is not referenced by all Emacs functions.
Composer is a dependency manager for PHP. This is the de facto standard installer for installing modern PHP toolsets and frameworks. Composer supports two types of package installation: per project and in a location called "global".
The composer command can be installed from your system's package manager or by following Download Composer method.
Packages installed by composer global are actually located under your home directory, not system-wide as default.
You can check in which directory the composer global installed command is located with the following command:
composer global -q config bin-dir --absoluteAdd to PATH typically either in UNIX systems:
PATH=$HOME/.composer/vendor/bin
PATH=$HOME/.config/composer/vendor/binPHPStan is a static analysis tool for PHP.
# Install PHPStan into your PHP project
cd /path/to/your/project
composer require --dev phpstan/phpstan
# Install PHPStan globally (user-wide)
composer global require phpstan/phpstanPHPStan works fine with both project and global installations, but best practice is to add it to your project as require --dev.
phpstan.el integrates PHPStan into Emacs.
Add flymake-phpstan or flycheck-phpstan package for on-the-fly checking while editing PHP codes.
phpstan.el can detect system and global installed PHPStan just fine.
Psalm is another PHP static analysis tool. Psalm is a powerful analyzer that is as good as PHPStan.
psalm.el integrates Psalm into Emacs.
PsySH is a PHP interactive shell (also called REPL).
# Install PsySH into your PHP project
cd /path/to/your/project
composer require --dev psy/psysh
# Install PsySH globally (user-wide)
composer global require psy/psyshpsysh.el integrates PsySH into Emacs.
Phpactor is a PHP language server with completion, refactoring and introspection functionality. This server features the LSP protocol and a proprietary (legacy) RPC protocol.
phpactor.el contains Phpactor installer/updater and the RPC protocol client. This package alone provides IDE-like functionality, but it will be discontinued in the future, so it is recommended to use it in combination with other LSP Clients.
See also LSP Support.
PHPUnit is the most popular xUnit testing framework for PHP. This is commonly installed by composer require --dev in the project.
phpunit.el integrates PHPUnit into Emacs. It's very easy to run PHPUnit inside an Emacs buffer.