Frage

Gemäß dem Titel gibt es PHP Äquivalent __name__ == "__main__"?

Gibt es etwas, das für beide Skripte ausgeführt über die Befehlszeile und über eine Web-Anfrage, oder wäre eine benutzerdefinierte Funktion benötigt?

funktionieren würde

Für unbekannte Menschen mit Python, __name__ == "__main__" können Sie eine Moduldatei definieren, und auch einige Dinge, mit denen Sie es laufen, wenn es der Einstiegspunkt ist. Die äquivalente Struktur in PHP würde dies aussehen:

// SomeClass.php
<?php
class SomeClass
{
    function doStuff() {
        echo "wahey!\n";
    }
}

// python, I know.
if (__name__ == "__main__") {
    $sc = new SomeClass;
    $sc->doStuff();
}
?>

// OtherClass.php
<?php
require_once("SomeClass.php");
class OtherClass
{
    public $yep;
}
?>

// command line:
php SomeClass.php     // outputs "wahey!"
php OtherClass.php    // outputs nothing

Hinweis : zerkms' Antwort ist die beste, aber es ist nicht ganz richtig - es sollte lauten:

if (!debug_backtrace()) {
    // do useful stuff
}

Dies ist deutlich schneller als! Count (debug_backtrace ()), die sich etwa doppelt so schnell wie meine Lösung beteiligt realpath ().

War es hilfreich?

Lösung

if (!count(debug_backtrace()))
{
    // some usefull stuff
}

Andere Tipps

if ($argv && $argv[0] && realpath($argv[0]) === __FILE__) {
    // ...
}

wirkt wie ein Zauber.

Wenn Sie PHP in der Kommandozeile ausführen, wird der Name der PHP-Datei passieren, wie $argv[0] zu programmieren und __FILE__ Magie variable aktuelle Datei bedeuten. So überprüfen wir das laufende Programm ist aktuelle Datei logisch gleich Pythons __name__ == "__main__".

Sie wollen wahrscheinlich eine der „Magic Constants“. Je nachdem, was Sie versuchen, __FILE__, __FUNCTION__ oder __CLASS__ können Sie zu tun, geben die Informationen, die Sie nach sind.

Sie sind ziemlich selbsterklärend:

  • __FILE__gives Sie die aktuelle Dateiname
  • __FUNCTION__ gibt Ihnen den Namen der aktuellen Funktion
  • __CLASS__ gibt Ihnen den Namen der aktuellen Klasse.

Überprüfen Sie die manuelle für weitere Details

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top