Thema:
Re:Meine Vorschläge flat
Autor: Fieldy
Datum:23.02.22 14:33
Antwort auf:Meine Vorschläge von Sylvester

>Ich habe mich noch mal durch die Threads gelesen und ja auch schon mal kurz etwas Zeit reingesteckt mir die Software anzugucken und auf PHP8 zu hieven (bin dabei in kurzer Zeit erstaunlich weit gekommen, [https://github.com/FrontierPsychiatrist/pxmboard]).

Sehr gut! Ich bin jetzt leider auch nicht mehr tief im Thema (mit PHP 8 schon gar nicht) aber im Endeffekt sind es zwei "größere" Baustellen:

1. Parameterübergabe als Referenz, wie Transistor schon geschrieben hat
2. mysql*-Funktionsaufrufe sind alle deprecated und sollten in PHP 8 gar nicht mehr drin sein

Ich glaube, dann gab es noch ein paar Anpassungen bei RegEx Funktionen (ereg(), eregi(), ereg_replace(), eregi_replace()). Das lässt sich aber mit der „Deprecated“-Inspection Funktion in PHP Storm schnell herausfinden.

Und natürlich der Vollständigkeit: Sichtbarkeit der Klassenmethoden. Ich bin mir gerade nicht sicher, ob PHP public/private Deklaration zwingend erwartet, das ist aber dann ja auch schnell angepasst.

Wenn man dabei ist, dann lassen sich natürlich auch die Methodenparameter per TypeHinting genauer definieren, dass ist dann natürlich für die Arbeit mit einer IDE ein schöner Vorteil.

Und ich weiß, einen Blumentopf gewinnt man damit nicht, aber PSR4 wäre natürlich auch schön :) Zumal man dann mit einem ordentlichen Namespace auch das ganze via Composer autoloaden kann. Und mit Composer ist es dann natürlich viel entspannter, externe Komponenten einzubinden. Aber zwingend notwendig ist das natürlich nicht, vor allem, wenn Smarty die einzige externe Komponente ist.

Long Story short: In PHP hat sich in den letzten 10 Jahren schon einiges getan ;-)

>1. Ausgabe von JSON Daten
>
>Ich habe die Idee von Transistor (die XML ausspuckt) mal kurz ausprobiert und das sah unkompliziert aus. Da kommt zwar vielleicht nicht eine Hypermedia Driven REST API raus wie sie ein hippes Startup umsetzt, aber die gleichen Daten wie sie jetzt aus HTML geparsed werden wären recht einfach verfügbar.


Natürlich wäre eine HATEOAS  API super ;) Aber letztendlich: Warum? Solange die Frontends eine einfache XML/JSON Struktur bekommen, sollte das ausreichen im ersten Schritt. Um vielleicht den ein oder anderen Request aus dem Frontend zu reduzieren kann man auch mit Sicherheit mal gucken, was man ggf. in den strukturieren Daten alles im ersten Rutsch zurück geben kann, Alles weitere kann man aber mit Sicherheit mal mittelfristig überlegen, ob das als Feature sinnvoll ist :-)

>Mittelfristig wäre es sinnvoll aber auch noch über Authentifizierung nachzudenken, vermutlich halt in Richtung OAuth oder so damit 3rd Party Clients da nicht mit Cookies rumhantieren müssen.

Ja, absolut! oAuth oder JWT.

>2. Performance
>
>Durch Migration des Software Stacks auf neuere Versionen der genutzten Technologien kann man sich vermutlich eine niedrigere CPU Last erhoffen.
>
>Bei der Datenbank bin ich mir unsicherer. Persönlich würde ich vermutlich auf Postgres migrieren, aber nur weil ich die einfach deutlich besser kenne als MySQL/Maria. Keine Ahnung ob das sonst was bringen würde.


Ich vermute, dass bei der Datenlast, die wir im Forum haben, es am Ende des Tages sich nicht viel gibt, ob ich die Daten aus einer MySQL, MariaDB oder Postgres-DB hole. Da würde ich mir dann eher Gedanken machen, wie ich generell die Anzahl der Requests auf die DB reduziere.

>Das Maniac Forum wird, vermute ich mal, eine deutlich höhere Lese- als Schreiblast haben. Das könnte man durch einen Caching Layer (Redis?) in der Software ausnuten um DB Zugriffe überhaupt nicht erst stattfinden zu lassen. An so was kann ich auch gerne mitarbeiten. Wenn man den zwischen DB und Templates schaltet profitieren auch gleich die eventuelle JSON API sowie das klassische 3 Frame Rendern davon. Caching kommt natürlich auch immer mit Tücken (Invalidierung...), aber irgendwie denke ich ließe sich das schon handlen.

Ja, das klingt absolut sinnvoll. Aber dafür gibt es mit Sicherheit externe Komponenten, ohne das Rad selbst neu zu erfinden ([https://symfony.com/doc/current/components/cache/adapters/redis_adapter.html]).


< antworten >