Zum Hauptinhalt springen

Workshop: PHP für Fortgeschrittene

Dieser 3- bis 5-tägige Workshop setzt solide Grundkenntnisse in PHP und in objektorientierter Programmierung voraus.

Die wichtigsten Inhalte

Projektstruktur

  • Verzeichnisstruktur für Nicht-TYPO3-Projekte
  • Unix-Zeilenenden
  • BOM
  • Composer
  • Namespaces
  • Autoloading
  • PSR-4: Autoloading

Symfony-Console

  • Symfony-Console-Skripte

Strikte Typisierung

  • Typ-Deklarationen
  • Return-Type-Deklarationen
  • Nullable Types
  • Strict-Mode
  • == vs. ===

OOP

  • Traits
  • Sichtbarkeit von Methoden
  • Vererbung
  • Interfaces
  • Abstrakte Klassen

eingebaute Klassen

  • ZipArchive
  • DOMDocument
  • DateTime

sauber programmieren

  • statische Codeanalyse
  • /** vs. /*
  • PHPDoc
  • PHPDoc für lokale Variablen
  • PHPDoc für Felder
  • PSR-1 und PSR-2: Coding Style
  • PHP-Linting
  • PHPCS
  • Composer-Skripts
  • PHP-CS-Fixer
  • Early Returns
  • Guard-Clauses
  • zyklomatische Komplexität
  • n-Path-Komplexität
  • Kopplung und Kohäsion
  • Design-by-Contract
  • PHPStan
  • Psalm
  • PHPMD

Fehlerbehandlung

  • Exceptions
  • PSR-3: Logger
  • Logging mit dem Symfony-Console-Logger
  • Logging mit Monolog

Anonyme Funktionen

  • anonyme Funktionen/Lambdas
  • Lambdas vs. Closures
  • Self-Executing Anonymous Functions

Low-Level-PHP

  • Variable Variablen
  • Magic-Methods

Weitere eingebaute Funktionen

  • reguläre Ausdrücke
  • Streams
  • CSV-Dateien lesen

Softwarearchitektur

  • DDD
  • Liskovsches Substitutionsprinzip
  • Open-Closed-Prinzip
  • Single-Responsibility-Principle

Refactoring und Code-Smells (Bonus, falls Zeit ist)

  • Smell: Comments
  • Smell: Feature envy
  • Smell: Switch statements
  • Refactoring: Extract method
  • Refactoring: Pull up method
  • Refactoring: Decompose conditional

Ausblick auf weitere Themen

  • Testing, TDD
  • Security von Webanwendungen
  • Design-Patterns
  • noch mehr Refactoring
  • Git und Git-Workflows
  • PhpStorm
  • Debugging und Profiling mit Xdebug und XHProf
  • Domain-driven Design

Resourcen

Datum

04.–06.09.2018

Sprache

Deutsch


Zur Übersicht