php die () iki kez çalıştıran?

3 Cevap php

Nasıl aşağıda pasajı "readablenot okunabilir" yazdıran mümkündür? afaik bir kalıp () hemen her şeyi durdurmak gerekir?

EDIT: tam fonksiyon yayınlanmıştır. Bu Zend_Search_Lucene_Storage_File_Filesystem bir fonksiyonudur. Biz her zaman "Dosya okunabilir değil" hataları alıyoruz. Dosya okunabilir olarak görünüyor ama aşağıda pasajı "readablenot okunabilir" yazdırır

EDIT 2: Üzgünüm, ben yayınlanmıştır bilgi bazı hatalar yaptım; tüm şimdi düzeltin.

public function __construct($filename, $mode='r+b')
    {
        global $php_errormsg;

        if(strpos($mode, 'w') === false) {
            die('not readable');
        }
        else die('readable');

        if (strpos($mode, 'w') === false  &&  !is_readable($filename)) {
            // opening for reading non-readable file
            require_once 'Zend/Search/Lucene/Exception.php';
            throw new Zend_Search_Lucene_Exception('File \'' . $filename . '\' is not readable.');
        }

        $trackErrors = ini_get('track_errors');
        ini_set('track_errors', '1');

        $this->_fileHandle = @fopen($filename, $mode);

        if ($this->_fileHandle === false) {
            ini_set('track_errors', $trackErrors);
            require_once 'Zend/Search/Lucene/Exception.php';
            throw new Zend_Search_Lucene_Exception($php_errormsg);
        }

        ini_set('track_errors', $trackErrors);
    }

3 Cevap

Ben bir uzuv gideceğim ve şöyle der:

It's not possible.

Unless: Sen echo die() else önce 'Tamam' yere ing ya da bir yıkıcı / kapatma fonksiyonu var demektir.

Kimden manuel on exit() which is the same as die():

Script sonlanacaktır. Kapatma fonksiyonları ve nesne yıkıcılar her zaman exit() çağrısında bile idam edilecek.

Ama kendisi tarafından yayınlanmıştır kod, 'Okok' bir çıkış neden asla.

To Troubleshoot:

  • Daha izlenebilir bir şey yankılandı satırı değiştirin. Dosya adını da (__file__) ve satır numarası (__line__), sadece o gerçekten yürütülen aynı hat olduğundan emin olmak için.
  • Bir hata ayıklayıcı bir yığın izlemesi vermek için (xdebug gibi bir şey) ekleyin. Fonksiyonu bir şekilde iki kez (bir yıkıcı veya kapatma kanca ile) adı veriliyor?

die() kapatma kanca yürütülmesini tetikler, böylece ikinci çağrı shotdown kanca ait bir kod yolu parçası olabilir.

Bir cevap Eğer soruna kodu iki kez çalıştırmak için neden sizin komut bir şey var olabilir (yani http yönlendirme olmayan sonlandırılmış veya sınıf iki örneği ediliyor).

Sınıf örneği noktası (veya noktaları) geri izlemek ve olası çoğaltılması arayın. Ya da, kurulum başka bir şey yapmaz ama test için gerekli veri az miktarda bir kez sınıf örneğini bir birim test / script.