1 Script automatisch in allen Dateien ausführen

  • ohne diese in diese einzubinden?

    Ich hoffe nicht :)


    Du könntest aber register_shutdown_function nutzen, um es am ende ausführen zu lassen.

    Oder auto_append_file (hab ich selbst noch nie genutzt - frag mich nicht :D)


    Oder Du hängst Dich in nen autoloader mit rein.

    Siehe: http://php.net/manual/de/language.oop5.autoload.php

    Wird eine Klasse geladen, dann führst Du ein require_once aus, welches ja nur ein Mal ausführt.

    Ist aber lame :)


    Oder auf einer Klasse in den __construct. Was auch lame ist :)


    Frage ist halt, was soll passieren?

    Und sieht man dann noch durch? Wird da evtl etwas zu sehr verschleiert?

  • Hey,


    Ich habe sehr viele PHP-Dateien in denen ich eine PHP Datei welche ich für eine Abfrage brauche ausführen muss.


    Da es viel Zeit kostet in jede Datei das händisch einzubinden suche ich nach einer Möglichkeit das automatisch zu machen.


    Das Script soll lediglich die Aktivität des Users (JS Script) sowie ein Status überprüfen.


    Okay. Ich werde mir morgen mal die Funktionen näher anschauen und mich nochmal melden.


    Grüße,

    Stef

  • Mich verwirrt jetzt der JS Einwurf... Was hat JS nun damit zu tun?


    Leider machen die ganzen Vorschläge bisher nur wenig Sinn, denn für Autoloading musst Du nicht nur etwas in OOP denken, sondern auch in alle Dateien zumindest den Aufruf der Klasse unterbringen. Wo das jetzt ein Vorteil sein soll, nicht stattdessen gleich include/require einzutragen, erschließt sich mir nicht.


    Das gleiche gilt für register_shutdown_function(). Auch hier musst Du das in der Datei, wo es greifen soll eintragen.


    Lediglich auto_append_file oder auto_prepend_file könnte zum Ziel führen, da das über die .ini Direktive eingetragen wird.

    Da ich das aber bisher auch nie verwendet habe, kann ich nicht sagen, ob das wirklich ausreicht.


    Alles in allem solltest Du die Grundlage nochmal überdenken.


    Vielleicht habe ich das Problem auch nicht richtig verstanden, aber wenn es tatsächlich darum geht, Script A in vielfachen anderen Scripten automatisch auszuführen, ohne es einzubinden, bleibt das höchst fragwürdig!

  • Zitat

    Da es viel Zeit kostet in jede Datei das händisch einzubinden suche ich nach einer Möglichkeit das automatisch zu machen.

    Sofern sich die Position allgemein gültig angeben lässt, z. B. ganz am Anfang, vor </head> oder </body>, evtl. ganz anders: Mit dem Editor und Ersetzen über mehrere Dateien hinein editieren? (natürlich nur das Einbinden, nicht da ganze Skript)

  • Also werden Websites (also einzelne Seiten) per PHP erstellt

    und dort soll jetzt überall per PHP zB ein JS code eingebunden werden?


    Like:

    PHP
    <!DOCTYPE html>
    <html>
    <head>
    <title><?php echo $title ?></title>
    <?php /* HIER SOLL IN JEDE DATEI EIN INCLUDE|REQUIRE ? */ ?>
    </head>
    <body>
    ...
    </body>
    </html>

    Da sowas wieder vorkommen kann|wird, solltest Du Dir ein "System" ausdenken.

    Order wie Sempervivum sagte: suchen und ersetzen mit Editor.

  • Hey,


    erstmal vielen Dank für eure Nachrichten.


    Zitat


    Mich verwirrt jetzt der JS Einwurf... Was hat JS nun damit zu tun?

    Arne Drews : Es soll auch eine JS Datei eingebunden werden. Da hast du vollkommen recht.


    Sempervivum : Danke für deinen Vorschlag. Ich werde mal schauen ob mein Editor es auch kann. Theoretisch ist dies ja das selbe wie in jede Datei es reinzukopieren.


    cottton : Ja genau. Richtig. Ich werde mir mal Gedanken darüber machen und aufjedenfall ein Script programmieren welches dies für mich erledigt.


    Dann bleibt mir wohl vorerst kein anderer Weg als es überall händisch einzubinden.


    Grüße,

    Stef

  • Hey,


    Okay.


    In meinen aktuellen Scripten ist kein erkennbares Muster vorhanden.


    Verstehe dich nicht so richtig.


    Ich würde einfach alle Dateien einscannen und in ein Array speichern. Danach gehe ich durch das Array, öffne die Datei, suche dann nach dem Muster, ersetzte dies dann mit dem Code und speichere den Inhalt wieder so ab.


    Dauert zwar etwas länger wenn es viele Dateien sind aber ist voll automatisch und schneller als das händische einfügen finde ich.


    Dazu braucht man dann aber aufjedenfall das Muster in jeder Datei welches man ersetzten muss.


    Grüße,

    Stef

  • So lange dauert das auch nicht, es sei denn, Du hast eine Anzahl vierstelliger Dateien im mittleren Bereich ;)


    Aber der Ablauf wäre prinzipiell möglich. Wenn Du nicht rekursiv laufen musst, reicht glob() in Verbindung mit file_get_contents() und file_put_contents(). Sollte das Muster nicht ganz gleich sein, gibt es noch preg_replace().


    Sollte das alles zu rechenintensiv sein, weil Deine Dateien bspw. so groß sind, würde ich einfach die per glob() gefunenen Dateien mit array_chunk() aufteilen in kleinere Blöcke und diese mit Unterbrechungen verarbeiten.

  • Naja, der <head> tag ist ja da, denk ich.

    Also einfach per str_replace() reingehauen :D

    Test: http://sandbox.onlinephpfuncti…40e5d2b4c776aed4c107b2623


    EDIT: vorher aber BACKUP von allen Files machen!

    Und evtl nen check einbauen, ob der content ("<head>\r\n{$contentToAdd}") schon existiert.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!