hotti: Token __END__ oder __DATA__ wie in Perl

Hi,

das gibt es in Perl: Token innerhalb einer Perl-Datei (Script oder Modul) womit ein lesender und auch schreibender Zugriff auf Daten möglich ist, die unterhalb des Tokens notiert sind.

Gibt es sowas auch für PHP?

Horst Eierstich

--
Auch mit den richtigen Suchbegriffen kann das Suchergebnis falsch sein.
  1. Tach!

    das gibt es in Perl: Token innerhalb einer Perl-Datei (Script oder Modul) womit ein lesender und auch schreibender Zugriff auf Daten möglich ist, die unterhalb des Tokens notiert sind.
    Gibt es sowas auch für PHP?

    Ja, findet man sehr einfach, wenn man nach "php __end__ __data__" sucht.

    dedlfix.

    1. Ja, findet man sehr einfach, wenn man nach "php __end__ __data__" sucht.

      ???

      Jörg Reinholz

      1. Tach!

        Ja, findet man sehr einfach, wenn man nach "php __end__ __data__" sucht.
        ???

        Ich wäre dir sehr verbunden, wenn du die drei Fragen ausformulieren würdest.

        Ansonsten, dieses Suchprinzip "Zielsprache + Begriff aus einer bekannten Sprache" klappt wunderbar. Möchte man wissen, was in Perl statt PHPs htmlspecialchars() verwendet werden kann, kann man nach "perl htmlspecialchars" suchen lassen. Üblicherweise hat bei solch verbreiteten Techniken schon mal jemand die Frage gestellt und beantwortet bekommen.

        dedlfix.

        1. Tach!

          Post!

          Ja, findet man sehr einfach, wenn man nach "php __end__ __data__" sucht.
          ???

          Ich wäre dir sehr verbunden, wenn du die drei Fragen ausformulieren würdest.

          Ansonsten, dieses Suchprinzip "Zielsprache + Begriff aus einer bekannten Sprache" klappt wunderbar.

          Ja. Aber das Ergebnis entspricht nicht dem versprochenem. Ich erhalte keine Anzeige.

          Auch mit einer Suche nach: site:php.net  end data erhalte ich nichts, wonach Hotti fragte.

          Jörg Reinholz

          1. Ja. Aber das Ergebnis entspricht nicht dem versprochenem. Ich erhalte keine Anzeige.

            Da sieht man ja, dass google die __ wegkürzt, nimmt man die Begriffe samt __ in Quotes sieht das schon wieder anders aus: php "end" "data"

            MfG
            bubble

            --
            If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
          2. Tach!

            Ansonsten, dieses Suchprinzip "Zielsprache + Begriff aus einer bekannten Sprache" klappt wunderbar.
            Ja. Aber das Ergebnis entspricht nicht dem versprochenem. Ich erhalte keine Anzeige.

            Hmm, weil Google unter Umständen mitzudenken versucht. Es hilft in dem Fall, Anführungszeichen zu verwenden: php "__end__" "__data__" oder es zur Abwechlung auf Bing zu versuchen. Oder direkt bei stackoverflow.com, das steht sowieso immer zuoberst bei solchen Fragen.

            Auch mit einer Suche nach: site:php.net  end data erhalte ich nichts, wonach Hotti fragte.

            Das wär auch nicht sehr sinnvoll. Auf den PHP-Seiten wird kaum einer Perl referenzieren. Das heißt, die Lösung steht zwar dort beschrieben, aber ohne die Perl-Begriffe.

            dedlfix.

            1. Das heißt, die Lösung steht zwar dort beschrieben, aber ohne die Perl-Begriffe.

              Aus meiner Perspektive ist dies die hilfreiche Antwort.

              Jörg Reinholz

              1. Das heißt, die Lösung steht zwar dort beschrieben, aber ohne die Perl-Begriffe.

                Aus meiner Perspektive ist dies die hilfreiche Antwort.

                Und hier ist mein Kommentar dazu ;)

                Hotti

                1. Und hier ist mein Kommentar dazu ;)

                  Naja. Aber, wie Du es dort als Beispiel beschreibst, ausgerechnet das Template da anhängen zu wollen halte ich für fragwürdig. PHP ist ja bereits eine Templatesprache, da könnte man gleiches ohne solche Bockstürze erreichen.

                  Anders sähe das mit gepackten oder binären Daten aus (die, damit die ggf. den FTP-Transport im ACII-Modus überleben, auch noch uu- oder base64-codiert sein sollten)- wie man es z.B. von den NVIDIA-Installern für Linux kennt, die auf diese Weise als Shell-Skript "getarnt" daherkommen.

                  Jörg Reinholz

                  1. Hi,

                    Und hier ist mein Kommentar dazu ;)

                    Naja. Aber, wie Du es dort als Beispiel beschreibst, ausgerechnet das Template da anhängen zu wollen halte ich für fragwürdig. PHP ist ja bereits eine Templatesprache, da könnte man gleiches ohne solche Bockstürze erreichen.

                    Der Einsatz von Templates beschränkt sich nicht nur auf das, was zum Browser geschickt wird. Beispielsweise wird eine Mailer.php mit einem eingebauten Template für die Maildatei samt Header sehr kompakt und handhabungssicher in der Anwendung.

                    Viele Grüße,
                      Horst

                2. Tach!

                  Und hier ist mein Kommentar dazu ;)

                  function data(){  
                  	$token = "\0"."__COMPILER_HALT_OFFSET__"."\0".__FILE__;  
                  	$const = get_defined_constants();  
                  	if (isset($const[$token])) {  
                  		$pos = $const[$token];  
                  		$fh = fopen(__FILE__, 'r', FALSE);  
                  		$s = stream_get_contents($fh, -1, $pos);  
                  		return trim($s);  
                  	} else{  
                  		return '';  
                  	}  
                  }
                  

                  "Also mal ehrlich: In Perl ist das enfacher:"

                  Also mal ehrlich, in PHP kann man das als Einzeiler schreiben. Benötigte Zutaten: return, defined(), trim(), file_get_contents(), __FILE__, false, null, __COMPILER_HALT_OFFSET__ und ein paar Satzzeichen.

                  Solch eine Lösung braucht man jedoch nur, wenn man paradoxerweise Programmcode und Daten trennen aber doch zusammen notieren möchte. Einfacher wäre es dann, gleich eine String-Variable in Here-/Nowdoc-Syntax anzulegen.

                  dedlfix.

      2. Ja, findet man sehr einfach, wenn man nach "php __end__ __data__" sucht.

        ???

        Genau: Die drei Fragezeichen sind die richtigen Suchbegriffe ;)

        Guckst Du hier lieber Jörg:

        ???

        Und jetzt werde ich mal schauen, was ich daraus machen kann. Auf jeden Fall was Praktisches ;)

        Viele Grüße,
        Horst Eierstich