Как по названию, есть ли PHP-эквивалент __name__ == "__main__"
?PHP-эквивалент Python __name__ == "__main__"?
Есть ли что-то, что могло бы работать для обоих скриптов, выполняемых через командную строку и через веб-запрос, или была бы нужна специальная функция?
Для тех, кто не знаком с Python, __name__ == "__main__"
позволяет вам определить файл модуля, а также некоторые вещи, которые позволяют вам запускать его, если это точка входа. Эквивалентная структура PHP будет напоминать это:
// 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
Примечание: ответ zerkms' является лучшим, но это не совсем верно - это следует читать:
if (!debug_backtrace()) {
// do useful stuff
}
Это значительно быстрее! count (debug_backtrace()), который сам примерно в два раза быстрее моего решения с участием realpath().
как насчет моего ответа и подсчета (debug_backtrace())? – zerkms