PHP-Äquivalent von Python __name__ == „__main__“?
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 ().
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