Zum Inhalt

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:

  1. Installiere Plugin EditorConfig
  2. File > Settings… > Editor > Code Style
    • Enable EditorConfig support: true

Docker

Um PhpStorms Interation mit Docker nutzen zu können muss man folgende Schritte ausführen:

  1. Installiere Plugin Docker
  2. Installiere Plugin PHP Docker
  3. Installiere Plugin PHP Remote Interpreter
  4. Installiere Programm Docker Compose
  5. File > Settings… > Build, Execution, Deployment > Docker > +
    • Name: Docker
    • Connect to Docker daemon with: Unix socket: default
  6. 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
    • 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
    • Service(s):
    • Show this page: false
    • Activate tool window: true
  7. Run > Run… > Docker Compose (Docker)
  8. File > Settings… > PHP > Servers > +
    • Name: php (siehe hostname in docker-compose.yml, nicht localhost)
    • Shared: false
    • Host: php (siehe hostname in docker-compose.yml, nicht localhost)
    • Port: 80
    • Debugger: Xdebug
    • Use path mappings: true
    • Project files:
      • File/Directory: $PROJECT_DIR$
      • Absolute path on the server: /var/www/html
  9. 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 Netzwerkschnittstelle docker0, oder eine beliebige nicht Loopback-Adresse)
  10. 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 (siehe docker-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 Netzwerkschnittstellt docker0, oder beliebige nicht Loopback-Adresse)
  11. File > Settings… > Languages & Frameworks > Node.js and NPM > Node interpreter > … > + > Add Local…
    • $PROJECT_DIR$/bin/node
  12. File > Settings… > Languages & Frameworks > Node.js and NPM
    • Node interpreter: bin/node (s.o.)
    • Coding assistance for Node.js: true
    • Package manager: yarn

Composer

Um PhpStorms Integration mit Composer nutzen zu können müssen folgenden Schritte ausgeführt werden:

  1. Richte Zugang zu kommerziellen Composer-Repositorien ein:
    • bin/ptr exec composer global config http-basic.nova.laravel.com buchhaltung@big5.de $PasswortAusBitwarden (siehe nova.laravel.com API-Key in Bitwarden)
    • bin/ptr exec composer global config http-basic.satis.spatie.be info@big5.de $PasswortAusBitwarden (siehe satis.spatie.be in Bitwarden)
    • bin/ptr exec composer global config http-basic.www.setasign.com franksmann@b5c.eu $PasswortAusBitwarden (siehe www.setasign.com in Bitwarden)
  2. Installiere Plugin PHP composer.​json support
  3. 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

Git

Um PhpStorms Integration mit Git nutzen zu können muss man folgende Schritte ausführen:

  1. Installiere Plugin Git
  2. Installiere Plugin Git Flow Integration
  3. File > Settings… > Other Settings > GitFlow
    • Feature
      • Fetch from Origin (-F): true
      • Push on finish feature (–push): true
    • Release
      • Fetch from Origin (-F): true
      • Push on finish release (-p): true
    • Hotfix
      • Fetch from Origin (-F): true
      • Push on finish Hostfix (-p): true
    • Bugfix
      • Fetch from Origin (-F): true
  4. 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:

  1. File > Settings… > PHP
    • PHP language level: 7.2 (siehe config.platform.php in composer.json oder ARG php im Dockerfile)
  2. 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
      • Search target: Complete match
    • 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:

Web-Frameworks

Laravel

Um PhpStorms Integration mit Laravel zu nutzen muss man folgende Schritte ausführen:

  1. 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
  2. php artisan ide-helper:generate
  3. php artisan ide-helper:meta
  4. php artisan ide-helper:models --no-interaction
  5. Installiere Plugin Laravel
  6. File > Settings… > PHP > Laravel
    • Enable plugin for this project: true

Symfony

Um PhpStorms Integration mit Symfony zu nutzen muss man folgende Schritte ausführen:

  1. 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
  2. Installiere Plugin DQL
  3. Installiere Plugin PHP Annotations
  4. Installiere Plugin Symfony Support
  5. File > Settings… > PHP > Symfony
    • Enable plugin for this project (change needs restart): true

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:

  1. 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
  2. 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

Codeception

Um PhpStorms Integration mit Codeception nutzen zu können müssen folgende Schritte ausgeführt werden:

  1. 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)
  2. 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

Jest

Um PhpStorms Integration mit Jest nutzen zu können müssen folgende Schritte ausgeführt werden:

  1. 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

PHPSpec

Um PhpStorms Integration mit PHPSpec nutzen zu können müssen folgende Schritte ausgeführt werden:

  1. 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)
  2. 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

PHPUnit

Um PhpStorms Integration mit PHPUnit nutzen zu können müssen folgende Schritte ausgeführt werden:

  1. 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:
  2. 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

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:

  1. 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
  2. File > Settings… > Editor > Inspections > PHP > Quality tools
    • PHP_CodeSniffer validation: true

Die automatische Formatierung lässt sich wie folgt einrichten:

  1. Installiere Plugin File Watchers
  2. 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:
  3. File > Settings… > Editor > Inspections > PHP > Quality tools
    • PHP_CodeSniffer validation: false

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:

  1. 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
  2. File > Settings… > Editor > Inspections > PHP > Quality tools
    • PHP CS Fixer validation: true

Die automatische Formatierung lässt sich wie folgt einrichten:

  1. Installiere Plugin File Watchers
  2. 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:
  3. File > Settings… > Editor > Inspections > PHP > Quality tools
    • PHP CS Fixer validation: false

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:

  1. Installiere PHP mit dem Paketmanager deines Vertrauens
  2. Installiere Plugin File Watchers
  3. 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:
  4. File > Settings… > Editor > Inspections > PHP > Quality tools
    • PHP CS Fixer validation: false

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:

  1. 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
  2. File > Settings… > Editor > Inspections > PHP > Quality tools
    • PHP Mess Detector validation: true

Datenbanken

Die Datenbankanbindung lässt sich wie folgt einrichten:

  1. File > Settings… > Languages & Frameworks > SQL Dialects
    • Project SQL Dialect: PostgreSQL (oder MySQL)
  2. View > Tool Windows > Database > + > Data Source > PostgreSQL (oder MySQL)
    • Download missing driver files
    • General
      • Name: postgresql://localhost (oder mysql://localhost)
      • Host: localhost (oder IP von COMPOSE_BIND)
      • Port: 5432 (oder 3306 für MySQL)
      • Authentication: User & Password
      • User: ... (siehe entsprechende Umgebungsvariablen in docker-compose.yml)
      • Password: ... (siehe entsprechende Umgebungsvariablen in docker-compose.yml)
      • Save: Forever
      • Database: ... (siehe entsprechende Umgebungsvariablen in docker-compose.yml)
      • URL:
    • Schemas
      • All schemas: true