PhpStorm
Hier wird beschrieben wie man PhpStorm für unsere Projekte einrichtet. Diese Anleitung geht davon aus, dass das Projekt bereits mit PTR gebaut und gestartet wurde.
Installation
Installiere PhpStorm mit dem Paketmanager deines Vertrauens, der Jetbrains Toolbox App oder manuell.
Generelles
EditorConfig
Mit EditorConfig können in Projekten grundlegende Einstellungen zu Einrückung, Zeilenumbruch und Zeichenkodierung festgelegt werden. Um PhpStorms Interation mit EditorConfig nutzen zu können müssen folgende Schritte ausgeführt werden:
- Installiere Plugin EditorConfig
- File > Settings… > Editor > Code Style
- Enable EditorConfig support:
true
- Enable EditorConfig support:
Docker
Um PhpStorms Interation mit Docker nutzen zu können muss man folgende Schritte ausführen:
- Installiere Plugin Docker
- Installiere Plugin PHP Docker
- Installiere Plugin PHP Remote Interpreter
- Installiere Programm Docker Compose
- File > Settings… > Build, Execution, Deployment > Docker > +
- Name:
Docker
- Connect to Docker daemon with:
Unix socket: default
- Name:
- Run > Edit Configurations… > + > Docker > Docker-compose
- Name:
Docker Compose
- Allow parallel run:
false
- Store as project file:
false
- Server:
Docker
(s.o.) - Run Modify options
- Apply `up` options:
true
- Apply `up` options:
- Compose file(s):
./docker-compose.yml;
- docker compose up Modify
- Start:
Selected and dependencies
- Attach to:
Selected services
- Recreate containers:
All
- Build:
Only missing images
- Stop containers:
On container exit
- Start:
- Service(s):
- Show this page:
false
- Activate tool window:
true
- Name:
- Run > Run… > Docker Compose (Docker)
- File > Settings… > PHP > Servers > +
- Name:
php
(siehehostname
indocker-compose.yml
, nichtlocalhost
) - Shared:
false
- Host:
php
(siehehostname
indocker-compose.yml
, nichtlocalhost
) - Port:
80
- Debugger:
Xdebug
- Use path mappings:
true
- Project files:
- File/Directory:
$PROJECT_DIR$
- Absolute path on the server:
/var/www/html
- File/Directory:
- Name:
- File > Settings… > PHP > CLI Interpreter > … > + > Other Local…
- Name:
bin/php
- Visible only for this project:
true
- PHP executable:
$PROJECT_DIR$/bin/php
- Debugger extension:
xdebug
- Configuration options:
xdebug.client_host=172.17.0.1
(IP-Adresse der Netzwerkschnittstelledocker0
, oder eine beliebige nicht Loopback-Adresse)
- Name:
- File > Settings… > PHP > CLI Interpreter > … > + > From Docker, Vagrant, VM, WSL, Remote… > Docker Compose
- Name:
Docker Compose
- Visible only for this project:
true
- Server:
Docker
(s.o.) - Configuration file(s):
./docker-compose.yml
- Services:
php
(siehedocker-compose.yml
) - Environment variables:
- Lifecycle: Connect to existing container (‘docker-compose exec’)
- PHP executable:
php
- Debugger extension:
xdebug
- Configuration options:
xdebug.client_host=172.17.0.1
(IP-Adresse der Netzwerkschnittstelltdocker0
, oder beliebige nicht Loopback-Adresse)
- Name:
- File > Settings… > Languages & Frameworks > Node.js and NPM > Node interpreter > … > + > Add Local…
$PROJECT_DIR$/bin/node
- File > Settings… > Languages & Frameworks > Node.js and NPM
- Node interpreter:
bin/node
(s.o.) - Coding assistance for Node.js:
true
- Package manager:
yarn
- Node interpreter:
Composer
Um PhpStorms Integration mit Composer nutzen zu können müssen folgenden Schritte ausgeführt werden:
- Richte Zugang zu kommerziellen Composer-Repositorien ein:
bin/ptr exec composer global config http-basic.nova.laravel.com buchhaltung@big5.de $PasswortAusBitwarden
(siehenova.laravel.com API-Key
in Bitwarden)bin/ptr exec composer global config http-basic.satis.spatie.be info@big5.de $PasswortAusBitwarden
(siehesatis.spatie.be
in Bitwarden)bin/ptr exec composer global config http-basic.www.setasign.com franksmann@b5c.eu $PasswortAusBitwarden
(siehewww.setasign.com
in Bitwarden)
- Installiere Plugin PHP composer.json support
- File > Settings… > PHP > Composer
- Path to composer.json:
$PROJECT_DIR$/composer.json
- Add packages as libraries:
true
- Synchronize IDE Settings with composer.json:
true
- Execution:
Remote interpeter
- CLI interpreter:
Docker Compose
(s.o.) - Path mappings:
<Project root>→/var/www/html
- Composer executable:
composer
- Path to composer.json:
Git
Um PhpStorms Integration mit Git nutzen zu können muss man folgende Schritte ausführen:
- Installiere Plugin Git
- Installiere Plugin Git Flow Integration
- File > Settings… > Other Settings > GitFlow
- Feature
- Fetch from Origin (-F):
true
- Push on finish feature (–push):
true
- Fetch from Origin (-F):
- Release
- Fetch from Origin (-F):
true
- Push on finish release (-p):
true
- Fetch from Origin (-F):
- Hotfix
- Fetch from Origin (-F):
true
- Push on finish Hostfix (-p):
true
- Fetch from Origin (-F):
- Bugfix
- Fetch from Origin (-F):
true
- Fetch from Origin (-F):
- Feature
- Installiere Plugin .ignore
PHP
Damit PhpStorm zusätzliche Warnung zu noch nicht unterstützten oder problematischen Konstrukten ausgeben kann muss man folgende Schritte ausführen:
- File > Settings… > PHP
- PHP language level:
7.2
(sieheconfig.platform.php
incomposer.json
oderARG php
imDockerfile
)
- PHP language level:
- File > Settings… > Editor > Inspections > + > Add Search Template…
- Dialog
- Match case:
false
- Files type:
PHP
- Search template:
$function$($arguments$)
- Filters for \$function\$:
- Text:
dd|ddd|dump
- Text:
- Search target:
Complete match
- Match case:
- OK
- Inspection name:
symfony/var-dumper usage
- Problem tool tip:
Debug expression using symfony/var-dump
- Description:
Reports a debug expression used for interaction with the package symfony/var-dump. Such statements should not appear in production code.
- Suppress ID:
- Inspection name:
- Dialog
Web-Frameworks
Laravel
Um PhpStorms Integration mit Laravel zu nutzen muss man folgende Schritte ausführen:
- File > Settings… > Directories (sofern jeweils vorhanden)
- .idea:
Exluded
- app:
Sources
- bootstrap/cache:
Excluded
- doc/mkdocs-material:
Excluded
- doc/system/site:
Excluded
- doc/user/site:
Excluded
- docs/mkdocs-material:
Excluded
- docs/system/site:
Excluded
- docs/user/site:
Excluded
- node_modules:
Excluded
- public:
Resource Root
- public/dist:
Excluded
- storage:
Excluded
- tests:
Tests
- vendor:
Excluded
- .idea:
php artisan ide-helper:generate
php artisan ide-helper:meta
php artisan ide-helper:models --no-interaction
- Installiere Plugin Laravel
- File > Settings… > PHP > Laravel
- Enable plugin for this project:
true
- Enable plugin for this project:
Symfony
Um PhpStorms Integration mit Symfony zu nutzen muss man folgende Schritte ausführen:
- File > Settings… > Directories (sofern jeweils vorhanden)
- .idea:
Exluded
- doc/mkdocs-material:
Excluded
- doc/system/site:
Excluded
- doc/user/site:
Excluded
- docs/mkdocs-material:
Excluded
- docs/system/site:
Excluded
- docs/user/site:
Excluded
- node_modules:
Excluded
- public:
Resource Root
- public/build:
Excluded
- public/bundles:
Excluded
- src:
Sources
- tests:
Tests
- tests/support/_generated:
Excluded
- var:
Excluded
- vendor:
Excluded
- web:
Resource Root
- web/build:
Excluded
- web/bundles:
Excluded
- .idea:
- Installiere Plugin DQL
- Installiere Plugin PHP Annotations
- Installiere Plugin Symfony Support
- File > Settings… > PHP > Symfony
- Enable plugin for this project (change needs restart):
true
- Enable plugin for this project (change needs restart):
Tests
Verschiedene Testframeworks lassend sich direkt in PhpStorm einbinden.
Behat
Um PhpStorms Integration mit Behat nutzen zu können müssen folgende Schritte ausgeführt werden:
- File > Settings… > PHP > Test Frameworks > + > Behat by Remote Interpreter
- CLI Interpreter:
Docker Compose
(s.o.) - Path mappings:
<Project root>→/var/www/html
- Path to Behat executable:
/var/www/html/vendor/behat/behat/bin/behat
- Default configuration file:
/var/www/html/behat.yml
- CLI Interpreter:
- Run > Edit Configurations… > + > Behat
- Name:
Behat
- Allow parallel run:
false
- Store as project file:
false
- Test scope: Defined in configuration file
- Use alternative configuration file:
false
- Test Runner options:
- Interpreter:
Docker Compose
(s.o.) - Interpreter options:
- Custom working directory:
- Environment variables:
- Show this page:
false
- Activate tool window:
true
- Name:
Codeception
Um PhpStorms Integration mit Codeception nutzen zu können müssen folgende Schritte ausgeführt werden:
- File > Settings… > PHP > Test Frameworks > + > Codeception by Remote Interpreter
- CLI Interpreter:
Docker Compose
(s.o.) - Path mappings:
<Project root>→/var/www/html
- Path to Codeception executable:
/var/www/html/vendor/codeception/codeception/codecept
- Default configuration file:
/var/www/html/codeception.yml
(oder/var/www/html/codeception.dist.yml
)
- CLI Interpreter:
- Run > Edit Configurations… > + > Codeception
- Name:
Codeception
- Allow parallel run:
false
- Store as project file:
false
- Test scope: Defined in configuration file
- Use alternative configuration file:
false
- Test Runner options:
- Interpreter:
Docker Compose
(s.o.) - Interpreter options:
- Custom working directory:
- Environment variables:
- Show this page:
false
- Activate tool window:
true
- Name:
Jest
Um PhpStorms Integration mit Jest nutzen zu können müssen folgende Schritte ausgeführt werden:
- Run > Edit Configurations… > + > Jest
- Name:
Jest
- Store as project file:
false
- Configuration file:
$PROJECT_DIR$/jest.conf.js
- Node interpreter:
$PROJECT_DIR$/bin/node
(s.o.) - Node options:
- Jest package:
$PROJECT_DIR$/node_modules/jest
- Working directory:
$PROJECT_DIR$
- Jest options:
- Environment variables:
- All tests:
true
- Show this page:
false
- Activate tool window:
true
- Name:
PHPSpec
Um PhpStorms Integration mit PHPSpec nutzen zu können müssen folgende Schritte ausgeführt werden:
- File > Settings… > PHP > Test Frameworks > + > PHPSpec by Remote Interpreter
- CLI Interpreter:
Docker Compose
(s.o.) - Path mappings:
<Project root>→/var/www/html
- Path to Behat executable:
/var/www/html/vendor/phpspec/phpspec/bin/phpspec
- Default configuration file:
/var/www/html/phpspec.yml
(oder/var/www/html/phpspec.yml.dist
oder/var/www/html/.phpspect.yml
)
- CLI Interpreter:
- Run > Edit Configurations… > + > PHPSpec
- Name:
PHPSpec
- Allow parallel run:
false
- Store as project file:
false
- Test scope: Defined in configuration file
- Use alternative configuration file:
false
- Test Runner options:
- Interpreter:
Docker Compose
(s.o.) - Interpreter options:
- Custom working directory:
- Environment variables:
- Show this page:
false
- Activate tool window:
true
- Name:
PHPUnit
Um PhpStorms Integration mit PHPUnit nutzen zu können müssen folgende Schritte ausgeführt werden:
- File > Settings… > PHP > Test Frameworks > + > PHPUnit by Remote Interpreter
- CLI Interpreter:
Docker Compose
(s.o.) - Path mappings:
<Project root>→/var/www/html
- PHPUnit library: Use Composer autoloader
- Path to script:
/var/www/html/vendor/autoload.php
- Default configuration file:
/var/www/html/phpunit.xml
(oder/var/www/html/phpunit.xml.dist
) - Default bootstrap file:
- CLI Interpreter:
- Run > Edit Configurations… > + > PHPUnit
- Name:
PHPUnit
- Allow parallel run:
false
- Store as project file:
false
- Test scope: Defined in configuration file
- Use alternative configuration file:
false
- Use alternative bootstrap file:
false
- Test Runner options:
- Preferred Coverage engine:
XDebug
- Interpreter:
Docker Compose
(s.o.) - Interpreter options:
- Custom working directory:
- Environment variables:
- Show this page:
false
- Activate tool window:
true
- Name:
Codequalität
Verschiedene Werkzeuge zur Verbesserung der Codequalität lassend sich direkt in PhpStorm einbinden.
PHP_CodeSniffer
Mit PHP_CodeSniffer lässt sich die Formatierung von PHP-Dateien prüfen und automatisch anpassen. Um PhpStorms Integration damit nutzen zu können müssen folgende Schritte ausgeführt werden:
Die Prüfung lässt sich wie folgt einrichten:
- File > Settings… > PHP > Quality Tools > PHP_CodeSniffer > … > +
- Interpreter:
bin/php
(s.o.) - PHP_CodeSniffer path:
/var/www/html/vendor/squizlabs/php_codesniffer/bin/phpcs
- Path to phpcbf:
/var/www/html/vendor/squizlabs/php_codesniffer/bin/phpcbf
- Interpreter:
- File > Settings… > Editor > Inspections > PHP > Quality tools
- PHP_CodeSniffer validation:
true
- PHP_CodeSniffer validation:
Die automatische Formatierung lässt sich wie folgt einrichten:
- Installiere Plugin File Watchers
- File > Settings… > Tools > File Watchers > + > custom
- Name:
phpcbf
- File type:
PHP
- Scope:
Project Files
- Program:
$ProjectFileDir$/bin/php
- Arguments:
vendor/squizlabs/php_codesniffer/bin/phpcbf -- $FilePathRelativeToProjectRoot$
- Output paths to refresh:
$FilePath$
- Working directory:
$ProjectFileDir$
- Environment variables:
- Auto-save edited files to trigger watcher:
false
- Trigger the watcher on external changes:
true
- Trigger the watcher regardless of syntax errors:
false
- Create output file from stdout:
false
- Show console:
Never
- Output filters:
- Name:
- File > Settings… > Editor > Inspections > PHP > Quality tools
- PHP_CodeSniffer validation:
false
- PHP_CodeSniffer validation:
PHP Coding Standards Fixer
Mit PHP Coding Standards Fixer lässt sich die Formatierung von PHP-Dateien prüfen und automatisch anpassen. Um PhpStorms Integration damit nutzen zu können müssen folgende Schritte ausgeführt werden.
Die Prüfung lässt sich wie folgt einrichten:
- File > Settings… > PHP > Quality Tools > PHP CS Fixer > … > +
- Interpreter:
bin/php
(s.o.) - PHP CS Fixer path:
/var/www/html/vendor/friendsofphp/php-cs-fixer/php-cs-fixer
- Interpreter:
- File > Settings… > Editor > Inspections > PHP > Quality tools
- PHP CS Fixer validation:
true
- PHP CS Fixer validation:
Die automatische Formatierung lässt sich wie folgt einrichten:
- Installiere Plugin File Watchers
- File > Settings… > Tools > File Watchers > + > custom
- Name:
php-cs-fixer
- File type:
PHP
- Scope:
Project Files
- Program:
$ProjectFileDir$/bin/php
- Arguments:
vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix --no-interaction -- $FilePathRelativeToProjectRoot$
- Output paths to refresh:
$FilePath$
- Working directory:
$ProjectFileDir$
- Environment variables:
- Auto-save edited files to trigger watcher:
false
- Trigger the watcher on external changes:
true
- Trigger the watcher regardless of syntax errors:
false
- Create output file from stdout:
false
- Show console:
On error
- Output filters:
- Name:
- File > Settings… > Editor > Inspections > PHP > Quality tools
- PHP CS Fixer validation:
false
- PHP CS Fixer validation:
Obiges führt php-cs-fixer
mittels bin/ptr exec
. Das hat einen
gewissen Overhead und ist auch nur möglich wenn die Abhängigkeiten des
Projekt installiert sind und die passenden OCI-Container laufen.
Sollte das Unannehmlichkeiten verursachen kann stattdessen die
automatische Formatierung stattdessen wie folgt eingerichtet werden:
- Installiere PHP mit dem Paketmanager deines Vertrauens
- Installiere Plugin File Watchers
- File > Settings… > Tools > File Watchers > + > custom
- Name:
vendor/bin/php-cs-fixer
- File type:
PHP
- Scope:
Project Files
- Program:
php
(oder$ProjectFileDir$/bin/php
für genauere Kompatibilität aber schlechtere Performance) - Arguments:
vendor/bin/php-cs-fixer fix --no-interaction -- $FilePathRelativeToProjectRoot$
- Output paths to refresh:
$FilePath$
- Working directory:
$ProjectFileDir$
- Environment variables:
- Auto-save edited files to trigger watcher:
false
- Trigger the watcher on external changes:
true
- Trigger the watcher regardless of syntax errors:
false
- Create output file from stdout:
false
- Show console:
On error
- Output filters:
- Name:
- File > Settings… > Editor > Inspections > PHP > Quality tools
- PHP CS Fixer validation:
false
- PHP CS Fixer validation:
PHP Mess Detector
Mit PHP Mess Detector lassen sich PHP-Dateien auf Codesmells überprüfen. Um PhpStorms Integration damit nutzen zu können müssen folgende Schritte ausgeführt werden:
- File > Settings… > PHP > Quality Tools > Mess Detector > … > +
- Interpreter:
bin/php
(s.o.) - PHP Mess Detector path:
/var/www/html/vendor/phpmd/phpmd/src/bin/phpmd
- Interpreter:
- File > Settings… > Editor > Inspections > PHP > Quality tools
- PHP Mess Detector validation:
true
- PHP Mess Detector validation:
Datenbanken
Die Datenbankanbindung lässt sich wie folgt einrichten:
- File > Settings… > Languages & Frameworks > SQL Dialects
- Project SQL Dialect:
PostgreSQL
(oderMySQL
)
- Project SQL Dialect:
- View > Tool Windows > Database > + > Data Source > PostgreSQL (oder MySQL)
- Download missing driver files
- General
- Name:
postgresql://localhost
(odermysql://localhost
) - Host:
localhost
(oder IP vonCOMPOSE_BIND
) - Port:
5432
(oder3306
für MySQL) - Authentication:
User & Password
- User:
...
(siehe entsprechende Umgebungsvariablen indocker-compose.yml
) - Password:
...
(siehe entsprechende Umgebungsvariablen indocker-compose.yml
) - Save:
Forever
- Database:
...
(siehe entsprechende Umgebungsvariablen indocker-compose.yml
) - URL:
- Name:
- Schemas
- All schemas:
true
- All schemas: