Ankündigung

Einklappen
Keine Ankündigung bisher.

File Append 3 Zeilen vor dem Ende

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • File Append 3 Zeilen vor dem Ende

    Hey Leute. Ich habe noch nicht viel mit Files gearbeitet.
    Code:
            $fileDestination = base_path('meinfile.php');   // Der Ort der Datei
            $line = count(file($fileDestination)) -3;             // Zähle alle Zeilen und ziehe 3 ab von der Summe
            $handle = fopen($fileDestination,'a');              // Öffne die Datei mit Option Append
            while(!feof($handle)){
    
                if($line){
                    fwrite($handle,'Mein Text'.PHP_EOL);           // wenn er die Linie gefunden hat, schreibe den text in diese Zeile.
    
                }
                break;
            }
            fclose($handle);                                                   // schließe das File wieder
    Leider fügt er den Text immer in die letzte Zeile ein, und nicht 3 Zeilen davor. Ich danke euch schon mal.

  • #2
    File liefert ein Array, schau mal in den Array Funktionen nach. Danach die ganze Datei wieder abspeichern ohne Append.
    Also alles einlesen, Array draus machen drittletzte Feld gehen Einfügen, alles abspeichern.

    Kommentar


    • #3
      Zitat von david19 Beitrag anzeigen
      Code:
      $fileDestination = base_path('meinfile.php'); // Der Ort der Datei
      Möchtest du wirklich PHP-Dateien *.php manipulieren? Keine gute Idee. Beschreibe mal was du vorhast. Ich denke wir finden hier eine bessere Lösung.

      Kommentar


      • #4

        jspit Ich habe einen Crud generator für Laravel programmiert, welchen ich über die Artisan Console steuern kann. Also ein Command. Mit dieser Funktion kann ich Funktionen in Klassen einfügen. Dadurch das jede Klasse mit
        Code:
        }
        endet, funktioniert Append nicht. Diese oben genannte Funktion brauche ich, wenn ich etwas in Klassen einfügen möchte. Ich sehe da keine andere Möglichkeit. Ich gebe dir recht, das Ganze ist mit Vorsicht zu geniesen. Besten Dank, es läuft

        Kommentar


        • #5
          Ich musste den Code nochmal verbessern, da sich sonst die Abstände immer wieder verschieben.
          Code:
                  $fileConverted2 = 'der text oder file, was rein geschrieben werden soll';
                  $fileDestination = base_path('/App/Models/Hub.php');
                  $file = $fileDestination
                  $fc = fopen($file, "r"); // nur lesen
                  while (!feof($fc)) {
                  $buffer = fgets($fc, 4096);
                  $lines[] = $buffer;
                  }
                  fclose($fc);
                  // das selbe File wieder öffnen und ersetzen, deswegen "w"
                  $f = fopen($file, "w") or die("couldn't open $file");
                  $lineCount = count($lines);
                  // gehe in die schleife vor dem ende
                  for ($i = 0; $i < $lineCount- 2; $i++) {
                  fwrite($f, $lines[$i]);
                  }
                  fwrite($f, $fileConverted2.PHP_EOL);
                  //die letzte zeile schreiben
                  fwrite($f, $lines[$lineCount-2]);
                  fclose($f);
          Jetzt gehts

          Kommentar


          • #6
            Ein Code-Generator würde aber einen vollständigen Code generieren und nicht irgendwo Cowboy und Indianer mäßig Code-Zeilen reinfummeln. Also selbst wenn man annimmt, dass der Code-Generator einen Sinn hat (was er für CRUD IMHO in 99,99% der Fälle nicht hat), stinkt das ganze immer noch.

            Meiner Ansicht nach verläufst du dich hier in irgendwas, statt einen Schritt zurück zu machen und eine saubere Lösung zu entwickeln.

            Aber vielleicht ist das auch nur eine schnelle Husch-Pfusch-Wegwerflösung, in die keine Zeit investiert werden soll. Dann ist meine Bemerkung natürlich hinfällig.

            Kommentar


            • #7
              Zitat von hellbringer Beitrag anzeigen
              Ein Code-Generator würde aber einen vollständigen Code generieren und nicht irgendwo Cowboy und Indianer mäßig Code-Zeilen reinfummeln. Also selbst wenn man annimmt, dass der Code-Generator einen Sinn hat (was er für CRUD IMHO in 99,99% der Fälle nicht hat), stinkt das ganze immer noch.

              Meiner Ansicht nach verläufst du dich hier in irgendwas, statt einen Schritt zurück zu machen und eine saubere Lösung zu entwickeln.

              Aber vielleicht ist das auch nur eine schnelle Husch-Pfusch-Wegwerflösung, in die keine Zeit investiert werden soll. Dann ist meine Bemerkung natürlich hinfällig.
              Hallo hellbringer. Der Generator funktioniert doch schon. Es ging nur darum, Relationships hinterher mit einzubringen. Ich stimme dir zu, das solche Crud maker sinnlos sind, weil du später falls sich was ändert, den Code wieder per Hand einfügen muss.
              Ich habe das aber so gemacht, das ich selbst später cruds hinzufügen kann, oder diese auch löschen kann, ohne Datei Reste zu hinterlassen. Pfusch ist das nicht, dadurch das du auch per console validieren kannst mit regex, kann nichts passieren. Allerdings ist der Unit Test ziemlich lang und viel Arbeit. Aber es lohnt sich. Und durch git, kann eh nichts passieren. Für SQL gibt es sqldump, falls mit der Datenbank etwas schief läuft.

              Kommentar


              • #8
                Zitat von david19 Beitrag anzeigen
                Der Generator funktioniert doch schon.
                Es geht nicht darum ob etwas funktioniert oder nicht funktioniert.

                Zitat von david19 Beitrag anzeigen
                Es ging nur darum, Relationships hinterher mit einzubringen. Ich stimme dir zu, das solche Crud maker sinnlos sind, weil du später falls sich was ändert, den Code wieder per Hand einfügen muss.
                Ich habe das aber so gemacht, das ich selbst später cruds hinzufügen kann, oder diese auch löschen kann, ohne Datei Reste zu hinterlassen.
                Also ich würde es so dynamisch programmieren, dass gar kein Code angepasst werden muss.

                Zitat von david19 Beitrag anzeigen
                Pfusch ist das nicht, dadurch das du auch per console validieren kannst mit regex, kann nichts passieren.
                Und Regex eignet sich überhaupt nicht zur Validierung von Code. Hierfür ist ein Parser notwendig. Du verrennst dich da von einem Irrtum in den nächsten. Das ganze ist ein einziges wackeliges Kartenhaus, das darauf wartet zusammen zu brechen.

                Zitat von david19 Beitrag anzeigen
                Allerdings ist der Unit Test ziemlich lang und viel Arbeit. Aber es lohnt sich. Und durch git, kann eh nichts passieren. Für SQL gibt es sqldump, falls mit der Datenbank etwas schief läuft.
                Öhhh, ja. Lieber hinterher reparieren, statt von vorne herein richtig machen

                Kommentar

                Lädt...
                X