Groups | Search | Server Info | Login | Register


Groups > de.comp.lang.php > #5009

Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern

From Andreas Borutta <borumat@gmx.de>
Newsgroups de.comp.lang.php
Subject Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern
Date 2025-12-11 14:07 +0100
Organization A noiseless patient Spider
Message-ID <12gr78hyiu35l.dlg@borumat.de> (permalink)
References (9 earlier) <10h43qc$3gdng$1@dont-email.me> <pdaqork8zz9j.dlg@borumat.de> <3t6935d6a3i3ebed8n3e8%sfroehli@Froehlich.Priv.at> <tzd3d720hq1r$.dlg@borumat.de> <1t6936922cia8032n3e8%sfroehli@Froehlich.Priv.at>

Show all headers | View raw


Stefan Froehlich:

> On Sun, 07 Dec 2025 21:55:57 Andreas Borutta wrote:
>> Stefan Froehlich:
>>> On Sun, 07 Dec 2025 20:09:34 Andreas Borutta wrote:
>>>> Arno Welzel:
>>>>> Andreas Borutta, 2025-12-04 14:21:
>>>> Wir reden ja über das Konzept von Erweiterungen. Ich nahm an,
>>>> dass es für den Standardfall "Erweiterung X anwenden" den
>>>> fertigen Befehl gibt.
> 
>>> Naja, es sind doch eh nur drei Befehle: Daten einlesen, Daten
>>> verarbeiten, Daten ausgeben:
>  
>>>| $tidy->parseString($html, $config, 'utf8');
>>>| $tidy->cleanRepair();
>>>| return (string) $tidy;
>  
>>> Der ganze Rest drumherum ist Initialisierung, Prüfung und
>>> Fehlerverarbeitung. Fast alles davon könntest Du theoretisch auch
>>> weglassen, aber wenn dann irgendetwas nicht nach Plan läuft,
>>> fliegt Dir das Programm um die Ohren - das ist kein Gewinn.
> 
>> Sollte denn die Aufgaben Initialisierung, Prüfung und
>> Fehlerverarbeitung nicht Bestandteil jeder Erweiterung oder des
>> aufrufenden Moduls sein.
> 
> Sind sie ja auch, nur:
> 
>> Mir leuchtet bisher eine Architektur nicht ein, wo der jeder
>> Anwender einer Erweiterung "das Rad neu erfindet" - nur um die
>> Erweiterung aufzurufen.
> 
> ...ist es dennoch keine Neuerfindung des Rades: Teilweise stellen
> sich zusätzliche Fragen, und häufig müssen diese Dinge auf jeder
> Ebene innerhalb einer Software stattfinden. Schauen wir es uns an:
> 
>| // Prüfe ob Tidy verfügbar ist
>| if (!class_exists('tidy')) {
>|   return $html;
>| }
> 
> Das kann naturgemäß nicht innerhalb von tidy passieren. Lässt Du
> diese Zeilen weg, passiert nichts schlimmes - solange tidy
> installiert ist, andernfalls stürzt die Software einfach ab (bzw.
> passiert das, was irgendeine Fehlerroutine weiter oben vorsieht, und
> das wird ziemlich sicher nicht die Rückgabe des unformatierten
> Quelltexts sein). Drei Zeilen, die praktisch nichts kosten, sich
> ggf. aber lohnen.
> 
>| // Lade Config
>| $iniFile = __DIR__ . '/tidy.ini';
>| $config = file_exists($iniFile)
>|   ? parse_ini_file($iniFile, false, INI_SCANNER_TYPED)
>|   : [];
> 
> Auch die Initialisierung von tidy kann naturgemäß nicht in tidy
> passieren. Brauchst Du keine (via externer Datei durchgeführte)
> Initialisierung, kannst Du diese Zeilen auch einfach weglassen, aber
> es ist IMO durchaus sinnvoll, in einer generischen Erweiterung die
> Möglichkeit dafür vorzusehen. Auch das kostet ja praktisch nichts.
> 
>| // Fallback auf Default-Config wenn Parse fehlschlägt
>| if ($config === false) {
>|   $config = [
>|     'indent' => true,
>|     'wrap' => 0,
>|     'output-html' => true,
>| ]  ;
>| }
> 
> Das mag der am ehesten redundante Teil der Geschichte sein: Es gibt
> eine Konfigurationsdatei, aber sie ist kaputt. Hier könnte man auch
> einfach auf [] zurückfallen, so wie es bei fehlender Datei getan
> wird. Geschmacksfrage, aber auch hier: Kostet fast nichts, kann man
> halten, wie man möchte.
> 
>| // Fehlerbehandlung
>| if ($tidy->errorBuffer) {
>|   // Optional: Logge Tidy-Warnungen
>|   // error_log('Tidy warnings: ' . $tidy->errorBuffer);
>| }
> 
> Die Fehlerbehandlung passiert innerhalb von tidy - tidy schreibt die
> Fehlermeldungen in einen Puffer, aber tidy kann nicht wissen, wie
> damit umgegangen werden soll. Wer sie nicht braucht, kann sie auch
> ignorieren, aber sie ggf. weiterzureichen erscheint nicht ganz dumm.
> (Kostet auch hier wieder nicht viel, zumal im Regelfall ja keine
> Meldungen vorhanden sein sollten).
> 
>| try {
>|   [...]
>| } catch (\Exception $e) {
>|   // Bei Fehler: Original-HTML zurückgeben
>|   return $html;
>| }
> 
> Und zu guter Letzt überlegen wir uns noch, was passiert, wenn tidy
> selbst fehlerhaft ist, Lassen wir unsere Software dann einfach
> abstürzen (so wie oben, beim Fehlen von tidy), oder tun wir so, als
> wäre alles in Ordnung und geben den unformatierten Quelltext zurück?
> Auch diese Entscheidung kann nur lokal getroffen werden, und für die
> zweite, IMO zu bevorzugende Option sind neuerlich ein paar wenige
> Zeilen Code erforderlich.
> 
> In Summe also 5x mehr Schutzmaßnahmen als eigentliche Arbeit, und
> das wiederholt sich vermutlich ganz ähnlich auf den Ebenen darunter
> (innerhalb von tidy) und darüber.

Erstmal vielen Dank für deine Erläuterungen : )

Vielleicht gibt es noch ein Missverständnis zu meiner Frage.

Ich vertraue euch erfahrenen Programmierern selbstverständlich, dass
der Code sinnvoll ist und die damit gelösten Aufgaben auch.

Mir ist nur nicht klar, dass es dafür keine "Schicht" gibt, die fix
und fertig bereit steht. Weil diese Aufgaben für jeden anfallen, der
Tidy nutzen möchte. 

Aber wir müssen das auch nicht weiter vertiefen. Ich muss eh hinnehmen
dass es diese "Schicht", diese "Architektur" nicht gibt.


Andreas
-- 
http://fahrradzukunft.de

Back to de.comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

"Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-04 00:36 +0100
  Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2025-11-04 07:57 +0000
    Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-04 09:17 +0100
      Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Claus Reibenstein <creibens@gmail.com> - 2025-11-04 11:33 +0100
      Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2025-11-04 11:26 +0000
        Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-04 20:36 +0100
          Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-19 20:17 +0100
            Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-19 21:24 +0100
              Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-20 01:16 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-21 17:59 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Markus Heinz <markus.heinz@uni-dortmund.de> - 2025-11-22 01:12 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-26 14:21 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-27 08:42 +0100
            Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-28 09:35 +0100
              Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Arno Welzel <usenet@arnowelzel.de> - 2025-11-28 10:51 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-12-04 14:21 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Arno Welzel <usenet@arnowelzel.de> - 2025-12-07 15:43 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-12-07 20:09 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2025-12-07 19:36 +0000
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-12-07 21:55 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2025-12-08 09:07 +0000
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-12-11 14:07 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2025-12-11 18:45 +0000
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Arno Welzel <usenet@arnowelzel.de> - 2025-12-15 12:23 +0100
    Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-08 07:20 +0100
      Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2025-11-08 10:05 +0000
        Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-08 18:10 +0100
          Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2025-11-08 19:50 +0000
        Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Arno Welzel <usenet@arnowelzel.de> - 2025-11-10 01:58 +0100
          Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-10 09:52 +0100
          Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Andreas Borutta <borumat@gmx.de> - 2025-11-10 09:53 +0100
          Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2025-11-10 09:20 +0000
            Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Arno Welzel <usenet@arnowelzel.de> - 2025-11-10 11:12 +0100
              Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2025-11-10 11:09 +0000
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Arno Welzel <usenet@arnowelzel.de> - 2025-11-10 17:51 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2025-11-11 08:09 +0000
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Arno Welzel <usenet@arnowelzel.de> - 2025-11-11 10:16 +0100
                Re: "Prettify" (Umbrüche, Leerzeichen) vor dem Ausliefern Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2025-11-11 10:03 +0000

csiph-web