Denken Sie nicht in Bezug auf PHP oder einer anderen für allgemeine Sprache, denken Sie an die minimal Sprache, die die Operationen in Ihrer Domäne der Bildverarbeitung zum Ausdruck bringen ausreichend ist. Benutzer senden Ausdrücke in dieser domänenspezifischen Sprache (DSL), diese Ausdrücke werden auf der Serverseite analysiert und an Ihren Code übergeben.
Zunächst ist es wichtig, über die Vielfalt der Bildverarbeitungsvorgänge nachzudenken und zu überlegen, wie sie kombiniert werden können. Das wird dir sagen, wie ausdrucksstark die Sprache sein muss. Sobald Sie das erledigt haben, gibt es viele Möglichkeiten, wie die Sprache syntaktisch aussehen würde. Die Syntax der Sprache könnte von einem Kompromiss zwischen Benutzerfreundlichkeit und einfacher Analyse abhängen.
Wenn Sie einen Parser für Ausdrücke dieser Art schreiben oder finden können, könnte dies für Benutzer am einfachsten sein. Kann jemand wirklich einen vorhandenen Ausdruck-Evaluator empfehlen, der in solchen Fällen funktionieren würde (z. B. kann Smarty sicher von Benutzern eingereichte Ausdrücke ausführen?) Oder tatsächlich ein Parser-Generator für PHP?
resize(rotate("foo.png", 90), 50)
Eine Sprache wie this könnte für die Nutzer weniger einfach, aber es kann eine ziemlich einfache Stapelmaschine verarbeitet werden:
"foo.png" 90 rotate 50 resize
Noch einfacher, eine XML-basierte Sprache dies nicht mag benötigen einen eigenen Parser:
<resize percent="50"><rotate degrees="90"><img src="foo.png"></rotate></resize>
einen DSL Verwendung schützt nicht SieFormal von domänenspezifischen Angriffen, zum Beispiel jemand über die Sprache verwenden, könnte ein Bild auf eine Zillion Pixel ein, um die Größe nd verbrauchen den gesamten Serverspeicher. Es müsste also eine Art Laufzeitumgebung für die DSL geben, die die Menge an Ressourcen limitiert, die von Benutzern eingereichte Skripte verwenden können.
Wenn Benutzer ihren PHP-Code ausführen, gibt es keine sicheren Möglichkeiten. – RaYell