PHP Python __ name__ == "__main__" eşdeğer?

1 Cevap

Başlık başı olarak, PHP eşdeğer olduğunu __name__ == "__main__"?

Komut satırından ve bir web isteği ile idam hem komut için çalışacak bir şey var mı, ya da özel bir işlev ihtiyaç olacaktır?

Python aşina olanlar için, __name__ == "__main__" Eğer bir modül dosyası tanımlamak ve aynı zamanda giriş noktası ise bunu çalıştırmak için izin veren bazı şeyler var sağlar. PHP eşdeğer yapı bu benzeyecektir:

// 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

Note: zerkms' answer is the best, but is not quite right - it should read:

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

Bu yaklaşık iki kat daha hızlı realpath içeren benim çözüm () gibi olan kendisi! Sayımı (debug_backtrace ()) çok daha hızlı.

1 Cevap

Muhtemelen "Sihirli sabitleri" birini istiyorum. Yapmaya çalıştığınız ne bağlı olarak, __FILE__, __FUNCTION__ veya __CLASS__ size peşinde bilgi verebilir.

Onlar oldukça kendini açıklayıcıdır:

  • __FILE__ size geçerli dosya adını verir
  • __FUNCTION__ size geçerli işlevin adını verir
  • __CLASS__ size geçerli sınıfın adını verir.

the manual daha fazla bilgi için kontrol edin