mathefritz: php, "was ist mein Name"

gibt es eigentlich für phpSkripte eine einfache Möglichkeit ( z.B. nicht mehr als 2 nicht überlange Zeilen )

den Namen der Datei in der es sich befindet zu betimmen - ohne Pfad, ohne die Extension .php ?

  1. Tach!

    gibt es eigentlich für phpSkripte eine einfache Möglichkeit ( z.B. nicht mehr als 2 nicht überlange Zeilen )

    den Namen der Datei in der es sich befindet zu betimmen - ohne Pfad, ohne die Extension .php ?

    Die magische Konstante __FILE__ enthält den Namen der Datei, in der der Aufruf der Konstante geschrieben steht.

    Mit pathinfo() und anderen unter See Also gelisteten Funktionen kann man aus Dateinamen Teile extrahieren.

    dedlfix.

    1. Danke!

      also ( getestet )

      <?php
      echo __FILE__,'<br>'; // vollständig
      
      echo $n = substr(__FILE__, strrpos(__FILE__,'/')+1 ),'<br>'; // Name mit Extension
      
      echo substr($n, 0, strrpos($n,'.') ) ,'<br>'; // nu name
      ?>
      
      
    2. pathinfo(FILE_NAME) wie auch pathinfo('FILE_NAME') ergeben auf lima-city Array;
      aber
      da mir hier noch niemand von __FILE__ abriet verwende ich es

      1. Tach!

        pathinfo(FILE_NAME) wie auch pathinfo('FILE_NAME') ergeben auf lima-city Array;

        Wenn man es mit echo ausgibt. Da die Funktion pathinfo() aber ein Array zurückgibt, ist echo nicht die passende Methode, sich dessen Inhalt anzuzeigen. print_r() oder var_dump() musst du da schon nehmen.

        Es gibt aber keinen Sinn, pathinfo(FILE_NAME) auszuführen, wenn es keine Konstante FILE_NAME gibt. Und pathinfo('FILE_NAME') wird keine großartigen Erkenntnisse bringe. Du musst dem pathinfo() schon einen echten Dateinamen übergeben oder eine Variable oder Konstante, die einne solchen als Inhalt hat.

        aber da mir hier noch niemand von __FILE__ abriet verwende ich es

        Warum sollte das jemand tun?

        dedlfix.

        1. Hallo dedlfix,

          ich habe zumindest zur Vorsicht geraten, weil man sich bei Verwendung von includes kurz Gedanken machen sollte, ob man besser die Info zur aktuellen Datei oder zum aktuellen Script verwendet.

          Rolf

          --
          Dosen sind silbern
  2. Hello,

    gibt es eigentlich für phpSkripte eine einfache Möglichkeit ( z.B. nicht mehr als 2 nicht überlange Zeilen )

    den Namen der Datei in der es sich befindet zu betimmen - ohne Pfad, ohne die Extension .php ?

    Da Du vermutlich immer noch an deinem Request-Router arbeitest, wäre pathinfo() vermutlich dein Freund.

    Dem musst Du dann nur die Info aus dem Request übergeben.

    Oder Du schaust gleich in $_SERVER['PATHINFO'] nach, was aber nicht immer vorhanden ist. Und dann gibt es noch $_SERVER['REDIRECT_URL'], die dann vorhanden sein sollte (je nach Distribution des Webservers), wenn Du mod_rewrite (Apache) benutzt hast.

    Bevor Du eine Entscheidung triffst, schau Dir alle Möglichkeiten an.

    Liebe Grüße
    Tom S.

    --
    Es gibt nichts Gutes, außer man tut es!
    Das Leben selbst ist der Sinn.
    1. Moin Tom,

      Dem musst Du dann nur die Info aus dem Request übergeben.

      Das funktioniert allerdings nicht mit eingebundenen Dateien, sondern so, wie dedlfix vorgeschlagen hat.

      Viele Grüße
      Robert

    2. Danke;
      die Manualseite wird mit Deinem parhinfo() Link nicht gefunden,
      und keiner der $_SEVER Einträge scheint vorhanden zu sein ( echo gibt dafür nichts aus )
      kann es mit FILE Probleme geben?

      1. Hallo,

        die Manualseite wird mit Deinem parhinfo() Link nicht gefunden,

        Bist du auf die Idee gekommen, das Suchfeld mit dem korrekten Begriff "pathinfo" zu füttern?

        Wenn ja, warum nicht?

        Gruß
        Kalk

      2. Hello,

        merkwürdig. Das tut mir leid.

        Da ist irgendwo (MiM?) was verloren gegangen.

        Liebe Grüße
        Tom S.

        --
        Es gibt nichts Gutes, außer man tut es!
        Das Leben selbst ist der Sinn.
      3. Hallo mathefritz,

        wenn Du $_SEVER statt $_SERVER geschrieben hast, ist das kein Wunder.

        Rolf

        --
        Dosen sind silbern
        1. Hallo,

          wenn Du $_SEVER statt $_SERVER geschrieben hast, ist das kein Wunder.

          das gleiche gilt für parhinfo…

          Gruß
          Kalk

  3. Hallo mathefritz,

    mein Name ist - ja - wer bin ich denn?

    foo.php:

    <?php
    include 'bar.php'
    echo '<br>';
    echo 'foo: Ich bin ' . __FILE__ . '<br>';
    echo 'foo: Mein Script heißt - teilweise  : ' . $_SERVER['SCRIPT_NAME'] . '<br>';
    echo 'foo: Mein Script heißt - vollständig: ' . $_SERVER['SCRIPT_FILENAME'] . '<br>';
    

    bar.php:

    <?php
    echo 'bar: Ich bin ' . __FILE__ . '<br>';
    echo 'bar: Mein Script heißt - teilweise  : ' . $_SERVER['SCRIPT_NAME'] . '<br>';
    echo 'bar: Mein Script heißt - vollständig: ' . $_SERVER['SCRIPT_FILENAME'] . '<br>';
    

    Wenn der Ordner, in dem diese beiden PHPs stecken, /home/web/mathe/fritz heißt, und die URL mathe.example.com auf /home/web/mathe zeigt, dann würde die Ausgabe von http://mathe.example.com/fritz/foo.php so aussehen:

    bar: Ich bin /home/web/mathe/fritz/bar.php
    bar: Mein Script heißt - teilweise  : /fritz/foo.php
    bar: Mein Script heißt - vollständig: /home/web/mathe/fritz/foo.php
    
    foo: Ich bin /home/web/mathe/fritz/foo.php
    foo: Mein Script heißt - teilweise  : /fritz/foo.php
    foo: Mein Script heißt - vollständig: /home/web/mathe/fritz/foo.php
    

    TL;DR: Willst Du den Pfad der AKTUELLEN Datei, nimm FILE. Willst Du den Namen des Scripts, das der User aufgerufen hat, relativ zum Web-Root, nimm $_SERVER['SCRIPT_NAME']. Willst Du den absoluten Pfad auf dem Server, nimm $_SERVER['SCRIPT_FILENAME'].

    Wenn Dich der übrige Inhalt der diversen Superglobals wie $_SERVER interessiert, schreib Dir eine Mini-PHP Datei, die nur die Funktion phpinfo() aufruft. ECHO brauchst Du nicht, das macht die selbst. Dann wirst Du zugeschmissen.

    Rolf

    --
    Dosen sind silbern
    1. Moin Rolf,

      TL;DR: Willst Du den Pfad der AKTUELLEN Datei, nimm FILE.

      Bzw. nimm unter Berücksichtung des Forums __FILE__ oder __FILE__.

      Viele Grüße
      Robert