Scratch Files und Scratch Buffers in PhpStorm für schnelle Experimente
AI generated
IDE
{ }
PhpStorm · Produktivität · Workflow
Scratch Files und Scratch Buffers für schnelle Experimente
Code testen, ohne ein Projekt anzufassen

Nicht jede Codezeile verdient eine eigene Datei im Projekt. PhpStorms Scratch Files erlauben schnelle Experimente mit voller Syntax-Hervorhebung und Sprachunterstützung, komplett losgelöst vom aktuellen Projekt, während Scratch Buffers für noch kürzere, unbenannte Zwischenablagen dienen. Wer beide gezielt einsetzt, hält das eigentliche Projekt sauber.

12 Min. Lesezeit Scratch Files Scratch Buffers Produktivität Workflow

1. Wofür Scratch Files gedacht sind

Scratch Files sind Dateien, die zwar in PhpStorm mit vollem Editor-Komfort bearbeitet werden, aber nicht Teil des aktuell geöffneten Projekts sind und beim Speichern nicht in dessen Verzeichnisstruktur landen. Sie leben in einem eigenen, IDE-verwalteten Bereich außerhalb des Projektbaums, tauchen deshalb nie in git status auf und lassen sich problemlos über beliebig viele Projekte hinweg wiederverwenden, ohne jemals versehentlich mitcommittet zu werden.

Der typische Anwendungsfall ist ein schnelles Experiment, das keinen dauerhaften Platz im Projekt braucht: Ein Kollege schickt einen JSON-Response zur Analyse, eine kurze Regex soll gegen Testdaten geprüft werden, oder eine Idee für eine PHP-Funktion soll isoliert durchdacht werden, bevor sie in die eigentliche Klasse wandert. Für all das eine neue Datei im Projekt anzulegen und später wieder zu löschen, wäre unnötiger Umweg.

2. Eine neue Scratch File erstellen

Die schnellste Route führt über den Shortcut Strg+Alt+Shift+Insert (auf macOS Cmd+Shift+N), der einen Dialog zur Sprachauswahl öffnet: PHP, SQL, JSON, YAML, Markdown und praktisch jede von PhpStorm unterstützte Sprache stehen zur Wahl. Nach der Auswahl öffnet sich sofort ein leerer Editor-Tab mit vollem Syntax-Highlighting, Code-Completion und Inspection, exakt wie in einer echten Projektdatei, nur eben ohne Projektbezug.

Alternativ funktioniert es auch andersherum: Markierten Code aus einer beliebigen Quelle, etwa einer E-Mail oder einem Chat, kann man direkt in einen neuen Scratch-File-Tab einfügen und PhpStorm erkennt die Sprache meist automatisch anhand der Syntax. Über Rechtsklick auf eine markierte Selektion und New, Scratch File lässt sich auch aus einem bestehenden Projekt heraus ein Codeausschnitt gezielt in einen neuen, unabhängigen Scratch-Kontext kopieren.


Neue Scratch File erstellen:

Windows/Linux: Strg+Alt+Shift+Insert
macOS:          Cmd+Shift+N

-> Sprache waehlen (PHP, SQL, JSON, YAML, ...)
-> Datei erhaelt automatischen Namen wie scratch_12.php
-> Umbenennen: Rechtsklick im Scratches-Panel -> Rename

Scratches-Panel oeffnen: View -> Tool Windows -> Scratches and Consoles

3. Spracherkennung und Syntax-Highlighting ohne Projektbezug

Weil eine Scratch File über die Sprachauswahl fest einer Dateiendung zugeordnet wird, greifen dieselben Highlighting- und Inspection-Regeln wie bei jeder echten Datei dieses Typs, inklusive PHP-spezifischer Warnungen wie unbenutzten Variablen oder fehlenden Rückgabetypen. Der einzige nennenswerte Unterschied ist, dass projektspezifische Features wie Framework-Autovervollständigung für Magento-Klassen nicht greifen, weil die Scratch File keinen Bezug zum Composer-Autoloading des Projekts hat.

Für reine Sprach-Experimente ohne Framework-Bezug, etwa das Ausprobieren einer neuen PHP-8.4-Funktion oder das Testen eines regulären Ausdrucks, ist das kein Nachteil. Für Magento-spezifische Snippets empfiehlt sich stattdessen ein temporärer Test innerhalb des Projekts selbst oder das nachträgliche Verschieben einer bereits fertig gedachten Scratch File in eine echte Projektdatei, sobald der Autovervollständigungs-Kontext des Frameworks tatsächlich gebraucht wird.

4. Ein schnelles PHP-Experiment in der Praxis

Ein alltägliches Beispiel: Ein Kollege fragt, wie sich eine Preisberechnung mit Rabattstaffeln in PHP am saubersten formulieren lässt. Statt dafür ein neues Projekt oder eine Testdatei im laufenden Magento-Projekt anzulegen, öffnet man eine PHP-Scratch-File, schreibt die Funktion isoliert samt ein paar var_dump-Aufrufen und führt sie direkt über Rechtsklick, Run auf der lokal konfigurierten PHP-CLI aus, ganz ohne Framework-Overhead.

Das Ergebnis lässt sich in Sekunden iterieren, ohne dass am Ende eine Debug-Datei im Projekt vergessen und versehentlich committet wird, ein Fehler, der bei schnell angelegten Testdateien im echten Projektverzeichnis regelmäßig passiert. Sobald die Logik steht, kopiert man sie gezielt in die eigentliche Klasse, während die Scratch File als Referenz für spätere, ähnliche Fragen erhalten bleiben kann.


<?php
declare(strict_types=1);

// scratch_14.php -- schnelles Experiment, kein Projektbezug

function calculateDiscountedPrice(float $price, array $tiers): float
{
    foreach ($tiers as $threshold => $discountPercent) {
        if ($price >= $threshold) {
            return round($price * (1 - $discountPercent / 100), 2);
        }
    }
    return $price;
}

$tiers = [100.0 => 10, 50.0 => 5];
var_dump(calculateDiscountedPrice(120.0, $tiers)); // 108.0
var_dump(calculateDiscountedPrice(60.0, $tiers));  // 57.0
var_dump(calculateDiscountedPrice(20.0, $tiers));  // 20.0

5. Scratch Files versus Scratch Buffers

Neben Scratch Files kennt PhpStorm auch Scratch Buffers, kurzlebige, unbenannte Editor-Tabs, die sich noch schneller öffnen lassen, aber standardmäßig keine dauerhafte Sprachzuordnung besitzen und nach dem Schließen ohne explizites Speichern verloren gehen können. Sie eignen sich für den absolut kürzesten Zwischenschritt, etwa das kurze Umformatieren einer eingefügten Textzeile, während eine echte Scratch File für alles gedacht ist, das über wenige Sekunden Lebensdauer hinausgeht.

In der Praxis nutzen die meisten Entwickler fast ausschließlich Scratch Files, weil deren Persistenz über IDE-Neustarts hinweg und die feste Sprachzuordnung deutlich verlässlicher sind. Scratch Buffers spielen ihre Stärke eher in spezialisierten Kontexten aus, etwa als temporärer Puffer innerhalb bestimmter Plugin-Werkzeuge, die selbst keine dauerhafte Datei anlegen wollen.

6. SQL-Scratches und HTTP-Client-Requests

Besonders nützlich sind Scratch Files mit der Sprache SQL in Kombination mit einer bereits eingerichteten Datenbankverbindung: Eine neue SQL-Scratch-Datei lässt sich direkt gegen eine im Database-Panel hinterlegte Magento-Datenbank ausführen, inklusive Autovervollständigung für Tabellennamen und Spalten, ganz ohne den Umweg über die MySQL-Kommandozeile oder ein separates Admin-Tool wie phpMyAdmin.

Ähnlich praktisch ist eine Scratch File mit der Endung .http für PhpStorms eingebauten HTTP-Client: Eine schnelle Anfrage gegen die Magento-REST- oder GraphQL-API, etwa zum Prüfen eines neuen Endpunkts, lässt sich als Scratch File formulieren, direkt in der IDE ausführen und die Antwort inline betrachten, ohne ein externes Werkzeug wie Postman zu öffnen.


### scratch_http.http -- REST-Endpunkt schnell testen

GET http://magento.test/rest/V1/products/24-MB01
Authorization: Bearer {{admin_token}}
Accept: application/json

### Admin-Token holen (separate Anfrage im selben Scratch-File)

POST http://magento.test/rest/V1/integration/admin/token
Content-Type: application/json

{
  "username": "admin",
  "password": "admin_password"
}

7. Organisation vieler Scratch Files im Alltag

Wer Scratch Files regelmäßig nutzt, sammelt schnell zwei- oder dreistellige Anzahlen davon an, die automatisch generierten Namen wie scratch_7.php helfen dabei wenig. Ein Blick ins Scratches-and-Consoles-Panel über View, Tool Windows, Scratches and Consoles zeigt alle vorhandenen Dateien in einer eigenen Baumstruktur, in der sich per Rechtsklick, Rename sinnvolle Namen wie preis-rabatt-test.php vergeben lassen, was das spätere Wiederfinden deutlich erleichtert.

Zusätzlich lassen sich im selben Panel Unterordner anlegen, um thematisch verwandte Scratch Files zu gruppieren, etwa magento-api-tests oder sql-abfragen, per Drag-and-Drop im Baum. Wer alte, nicht mehr benötigte Scratch Files konsequent löscht statt sie anzusammeln, hält das Panel übersichtlich, ganz ähnlich wie bei Browser-Tabs, die sich ohne Aufräumen unbemerkt zu Dutzenden ansammeln.

8. Versionierung und Sharing: was fehlt

Scratch Files werden standardmäßig nicht versioniert und liegen außerhalb jedes Git-Repositorys, was ihren größten Vorteil, kein versehentliches Commit, zugleich zu ihrer größten Schwäche macht: Es gibt keine eingebaute Historie über den bereits erwähnten Local-History-Mechanismus hinaus, und der Inhalt lässt sich nicht direkt mit einem Kollegen teilen, ohne ihn manuell zu kopieren. Wer eine Scratch File dauerhaft behalten will, sollte sie gezielt in ein eigenes, kleines Snippets-Repository exportieren.

Über JetBrains Settings Sync lassen sich Scratch Files zwischen mehreren eigenen Rechnern desselben Nutzers spiegeln, sofern Settings Sync aktiviert und die entsprechende Option für Scratches eingeschaltet ist. Für die Weitergabe an Kollegen bleibt dagegen nur der manuelle Weg über Kopieren, eine geteilte Snippet-Sammlung im Team-Wiki oder ein eigenes kleines Repository, in das besonders nützliche Scratch Files bei Bedarf bewusst überführt werden.

9. Grenzen und Vergleich zu Alternativen

Im Vergleich zu Alternativen wie einem separaten Terminal-Tab oder einem eigenen Wegwerf-Projektordner bietet eine Scratch File den entscheidenden Vorteil, den vollen IDE-Komfort direkt neben der eigentlichen Arbeit zu behalten, ohne den Fenster- oder Projektkontext zu wechseln. Genau dieser Komfort, kombiniert mit der fehlenden dauerhaften Versionierung, macht Scratch Files zum idealen Werkzeug für alles, was schnell entstehen und genauso schnell wieder verschwinden darf.

Die folgende Tabelle stellt vier Optionen für schnelle Experimente gegenüber, gemessen an IDE-Komfort, Versionierung und dem Aufwand für das spätere Aufräumen.

Option IDE-Komfort Versionierung Aufräumaufwand
Scratch File Voll (Highlighting, Completion) Nur über Local History Gering, im Scratches-Panel
Neues Wegwerf-Projekt Voll, aber eigener Kontext Manuell per Git möglich Hoch, Ordner muss gelöscht werden
Terminal-Snippet Kaum vorhanden Keine Sehr gering, aber flüchtig
Datei im echten Projekt Voll, inkl. Framework-Kontext Über Projekt-Git Risiko des versehentlichen Commits

Mironsoft

PhpStorm-Setup, Docker-Integration und Team-Produktivität

PhpStorm, das für Magento- und PHP-Projekte wirklich optimal läuft?

Wir prüfen bestehende PhpStorm-Setups auf langsame Indizierung, ungenutzte Docker-Integration und fehlende Team-Konventionen und richten eine Konfiguration ein, die von der ersten Sekunde an produktiv ist.

Setup-Review

Indexing, Interpreter und Speicher-Einstellungen für große Magento-Projekte optimieren.

Docker-Integration

Xdebug, PHPUnit und Datenbank-Tools sauber mit dem Docker-Setup verbinden.

Team-Konventionen

Inspection-Profile, Code-Style und Live-Templates projektweit vereinheitlichen.

10. Zusammenfassung

Scratch Files: Das Wichtigste auf einen Blick

Erstellen

Strg+Alt+Shift+Insert (macOS Cmd+Shift+N), Sprache wählen, sofort loslegen.

Kein Projektbezug

Kein git status-Eintrag, kein versehentliches Commit, aber auch kein Framework-Autocomplete.

SQL und HTTP

SQL-Scratches gegen die Datenbankverbindung, .http-Scratches gegen REST/GraphQL.

Organisation

Scratches-Panel nutzen, sinnvoll umbenennen, in Unterordner gruppieren, Altes löschen.

11. FAQ: Scratch Files: Das Wichtigste auf einen Blick

1Was ist eine Scratch File in PhpStorm?
Eine Datei mit vollem Editor-Komfort inklusive Syntax-Highlighting und Code-Completion, die außerhalb des aktuellen Projekts in einem eigenen, IDE-verwalteten Bereich liegt und nie im Git-Status des Projekts auftaucht.
2Wie erstelle ich schnell eine neue Scratch File?
Über den Shortcut Strg+Alt+Shift+Insert unter Windows und Linux, beziehungsweise Cmd+Shift+N unter macOS. Danach die gewünschte Sprache auswählen, ein leerer Editor-Tab öffnet sich sofort.
3Funktioniert Code-Completion in einer Scratch File genauso wie im Projekt?
Für die reine Sprachsyntax ja, projektspezifische Features wie Framework-Autovervollständigung für Magento-Klassen greifen jedoch nicht, weil die Scratch File keinen Bezug zum Composer-Autoloading des Projekts hat.
4Was ist der Unterschied zwischen Scratch Files und Scratch Buffers?
Scratch Files sind benannte, dauerhafte Dateien mit fester Sprachzuordnung, die IDE-Neustarts überstehen. Scratch Buffers sind kürzerlebige, unbenannte Tabs für den absolut kürzesten Zwischenschritt.
5Kann ich SQL-Scratches direkt gegen die Magento-Datenbank ausführen?
Ja, mit einer im Database-Panel eingerichteten Verbindung lässt sich eine SQL-Scratch-Datei direkt ausführen, inklusive Autovervollständigung für Tabellennamen und Spalten.
6Wozu dienen .http-Scratch-Dateien?
Sie nutzen PhpStorms eingebauten HTTP-Client, um Anfragen etwa an die Magento-REST- oder GraphQL-API direkt aus der IDE zu senden und die Antwort inline zu betrachten, ohne ein externes Werkzeug zu öffnen.
7Werden Scratch Files versioniert?
Nicht über Git, da sie außerhalb jedes Repositorys liegen. Eine gewisse Historie liefert der Local-History-Mechanismus der IDE, für dauerhafte Versionierung sollte der Inhalt gezielt in ein echtes Repository verschoben werden.
8Wie behalte ich bei vielen Scratch Files den Überblick?
Über das Scratches-and-Consoles-Panel lassen sich Dateien sinnvoll umbenennen und in Unterordnern nach Thema gruppieren, nicht mehr benötigte Dateien sollten konsequent gelöscht werden.
9Kann ich eine Scratch File mit einem Kollegen teilen?
Nicht direkt. Der Inhalt muss manuell kopiert oder exportiert werden, es gibt keine eingebaute Freigabe- oder Synchronisationsfunktion für Scratch Files zwischen Nutzern.
10Wann sollte ich statt einer Scratch File eine echte Projektdatei anlegen?
Sobald Framework-spezifische Autovervollständigung, etwa für Magento-Klassen, tatsächlich gebraucht wird, oder sobald der Code dauerhaft im Projekt bleiben und versioniert werden soll.