doomemacs/modules/lang/php
Henrik Lissner 6be2262423 Bump :lang
200ok-ch/counsel-jq@153d70b -> 200ok-ch/counsel-jq@8cadd2e
Andersbakken/rtags@63f18ac -> Andersbakken/rtags@65113e2
Groovy-Emacs-Modes/groovy-emacs-modes@26da902 -> Groovy-Emacs-Modes/groovy-emacs-modes@99eaf70
NixOS/nix-mode@0023fc5 -> NixOS/nix-mode@3cca5b6
ProofGeneral/PG@f0f0476 -> ProofGeneral/PG@bc86736
Raku/raku-mode@8a6e17f -> Raku/raku-mode@7496ad3
StanfordLegion/terra-mode@1e5e824 -> StanfordLegion/terra-mode@eab9e59
TheBB/company-reftex@291c283 -> TheBB/company-reftex@42eb98c
agda/agda@ecb9323 -> agda/agda@af9c4b9
ananthakumaran/tide@ad6fa78 -> ananthakumaran/tide@ccff099
asok/projectile-rails@f1fe6e8 -> asok/projectile-rails@6a18ada
beancount/beancount-mode@3c04745 -> beancount/beancount-mode@02fe03e
brotzeit/rustic@ed68fd3 -> brotzeit/rustic@6ca73bb
cdominik/cdlatex@adf96ba -> cdominik/cdlatex@614a8d9
clojure-emacs/clojure-mode@a14671e -> clojure-emacs/clojure-mode@3e426b3
cython/cython@9decfca -> cython/cython@fae33cf
dgutov/robe@126650a -> dgutov/robe@e1304d1
diml/utop@711c246 -> diml/utop@c87b8b2
dominikh/go-mode.el@49a5380 -> dominikh/go-mode.el@3497434
elixir-editors/emacs-elixir@0212b06 -> elixir-editors/emacs-elixir@6bbc1e5
emacs-csharp/csharp-mode@f977800 -> emacs-csharp/csharp-mode@093f0f2
emacs-ess/ESS@126d344 -> emacs-ess/ESS@4fefd0f
emacs-lsp/lsp-dart@f3b70ec -> emacs-lsp/lsp-dart@01d89d4
emacs-lsp/lsp-haskell@7efbef3 -> emacs-lsp/lsp-haskell@eb37ac4
emacs-lsp/lsp-java@9685334 -> emacs-lsp/lsp-java@b66a075
emacs-lsp/lsp-metals@51a89c1 -> emacs-lsp/lsp-metals@9f82ebe
emacs-lsp/lsp-pyright@65fb141 -> emacs-lsp/lsp-pyright@71a7976
emacs-lsp/lsp-sourcekit@aafa987 -> emacs-lsp/lsp-sourcekit@ae4aa87
emacs-php/php-mode@a2bca9b -> emacs-php/php-mode@cbf2723
emacs-php/phpactor.el@80788a8 -> emacs-php/phpactor.el@272217f
emacs-straight/auctex@1472d1d -> emacs-straight/auctex@ea410dc
erlang/otp@94c9738 -> erlang/otp@645ea81
ethereum/emacs-solidity@b4fd719 -> ethereum/emacs-solidity@5f6ef31
factor/factor@5bfeab6 -> factor/factor@b989a86
fsharp/emacs-fsharp-mode@78898a1 -> fsharp/emacs-fsharp-mode@93b1fbc
godotengine/emacs-gdscript-mode@16c631c -> godotengine/emacs-gdscript-mode@b7bfa6a
greghendershott/racket-mode@5115c47 -> greghendershott/racket-mode@7f12cb1
haskell/haskell-mode@1baa12a -> haskell/haskell-mode@98ba392
hhvm/hack-mode@847fd91 -> hhvm/hack-mode@f9315be
hlissner/emacs-pug-mode@685fd34 -> hlissner/emacs-pug-mode@d080904
hvesalai/emacs-sbt-mode@0bdc36b -> hvesalai/emacs-sbt-mode@e29464a
idris-hackers/idris-mode@80aabd2 -> idris-hackers/idris-mode@f52ad0b
immerrr/lua-mode@2d9a468 -> immerrr/lua-mode@2bd9077
iyefrat/evil-tex@5f0d6fb -> iyefrat/evil-tex@87445d4
jcollard/elm-mode@e9fcf9c -> jcollard/elm-mode@f2e2d00
joaotavora/sly@5966d68 -> joaotavora/sly@41f4d65
jorgenschaefer/pyvenv@9b3678b -> jorgenschaefer/pyvenv@045ff94
jrblevin/markdown-mode@ac9ea26 -> jrblevin/markdown-mode@359347b
jwiegley/emacs-async@d7e7f79 -> jwiegley/emacs-async@9a8cd0c
jyp/attrap@778382e -> jyp/attrap@a5bc695
leanprover/lean-mode@5c50338 -> leanprover/lean-mode@bf32bb9
ledger/ledger-mode@32fef09 -> ledger/ledger-mode@19b84dc
nathankot/company-sourcekit@abf9bc5 -> nathankot/company-sourcekit@a1860ad
necaris/conda.el@dce431b -> necaris/conda.el@6db0720
non-Jedi/eglot-jl@84cff9d -> non-Jedi/eglot-jl@49f170e
nonsequitur/inf-ruby@c6990a6 -> nonsequitur/inf-ruby@03dd9c9
ocaml-ppx/ocamlformat@0ad8d0a -> ocaml-ppx/ocamlformat@5dd6574
ocaml/dune@65e04ba -> ocaml/dune@75ecfe3
ocaml/merlin@635923d -> ocaml/merlin@5731826
ocaml/tuareg@37a6730 -> ocaml/tuareg@b59c422
pashky/restclient.el@abc307b -> pashky/restclient.el@2cc1fd3
polymode/polymode@b3871e9 -> polymode/polymode@7d1f822
pythonic-emacs/anaconda-mode@344727c -> pythonic-emacs/anaconda-mode@4f367c7
seagle0128/grip-mode@2855205 -> seagle0128/grip-mode@c0ca789
sebasmonia/sharper@d610b83 -> sebasmonia/sharper@08277b6
swift-emacs/swift-mode@ad12a30 -> swift-emacs/swift-mode@1b47a09
technomancy/fennel-mode@ba14a7d -> technomancy/fennel-mode@a908db8
tpapp/julia-repl@7ce38a9 -> tpapp/julia-repl@79e686e
ziglang/zig-mode@2d0eb23 -> ziglang/zig-mode@0babe7e

Closes #5221
2021-07-11 17:52:08 -04:00
..
autoload.el lang/php: refactor company init 2020-02-27 23:27:50 -05:00
config.el lang/php: use php-language-server.php if in PATH 2020-10-26 05:49:21 -04:00
doctor.el Add :tools lsp checks for +lsp flag 2019-04-24 18:16:05 -04:00
packages.el Bump :lang 2021-07-11 17:52:08 -04:00
README.org lang/php: expand on dependencies in README 2021-01-31 20:41:17 -05:00

lang/php

Description

This module adds support for PHP 5.3+ (including PHP7).

  • ctags-based code completion (company-php and phpctags)
  • eldoc support (ac-php and php-extras)
  • REPL (php-boris)
  • Code refactoring commands (php-refactor-mode)
  • Unit-test commands (phpunit)
  • Support for laravel and composer projects (with project-specific snippets)
  • File templates
  • Snippets

PHP was the first programming language I got paid to code in, back in the Cretaceous period (2003). My sincerest apologies go out to all the programmers who inherited my earliest PHP work. I know you're out there, writhing in your straitjackets.

Save a programmer today. Stop a friend from choosing PHP as their first language.

Maintainers

This module has no dedicated maintainers.

Module Flags

  • +hack Add support for the Hack dialect of PHP by Facebook.
  • +lsp Enable LSP support through phpactor or intelephense. Requires the :tools lsp module and the phpactor server to be installed on your system.

Prerequisites

PHP

To get started with PHP, you'll need php (5.3+) and composer.

Note for +lsp:

  1. In order to make full use of phpactor server, php (7.3+) is recommended.
  2. If you use intelephense, node and npm are needed.

MacOS

PHP 5.5 comes prepackaged with newer versions of MacOS. These instructions are provided for reference:

brew tap homebrew/homebrew-php
brew install php71  # or php53, php54, php55
brew install composer

# If you use intelephense:
brew install node
brew install npm

Arch Linux

sudo pacman --needed --noconfirm -S php composer  # or php53, php54, php55

# If you use intelephense:
sudo pacman -S nodejs npm

openSUSE

sudo zypper install php-composer

# If you use intelephense:
sudo zypper install nodejs npm

Dependencies

This module has no required dependencies, but it has a couple optional ones.

  • boris (REPL)
  • phpctags (better code completion)
  • phpunit (unit test commands)
  • php-cs-fixer and @prettier/plugin-php (for code formatting)
composer global require \
    d11wtq/boris \
    phpunit/phpunit \
    techlivezheng/phpctags \
    friendsofphp/php-cs-fixer

# Needed by php-cs-fixer, otherwise you'll get "Couldn't resolve parser
# 'php'" errors
npm install -g @prettier/plugin-php

You must ensure that \~/.composer/vendor/bin is in PATH, so these executables are visible to Emacs:

# place this in your profile file, like ~/.bash_profile or ~/.zshenv
export PATH="~/.composer/vendor/bin:$PATH"

You may also need to regenerate your envvar file by running doom env on the command line.

To use intelephense instead of , run M-x lsp-install-server and choose iph to install lsp-intelephense.

TODO Features

TODO Configuration

TODO Troubleshooting