PHP Daima işlevi çalıştırabilirsiniz

5 Cevap php

Ben bazı hatalar JSON biçiminde iade almak için çalışıyorum. Yani, bir sınıf düzeyi VAR yaptı:

public $errors = Array();

Yani, komut aşağı düşürmek, farklı işlevleri bir hata döndürür, ve $ hataları diziye kendi hata ekleyebilirsiniz. Ama geri dönüşü kullanmak zorunda; bir hata oluştuktan sonra, bazı yerlerde komut durdurmak için.

Bunu yaparken Peki, nasıl hala tüm toplanan hataları dönecektir benim son hata fonksiyonunu çalıştırabilirsiniz? Nasıl komut durdurmak zorunda, ama yine de ben senaryoyu durdurmak için gerekli niçin hataları dönmek isteyen soruna alabilirim?!

5 Cevap

Eğer PHP5 + senin sınıfını kullanıyorsanız, bir destructor yöntemi olabilir:

public function __destruct() {
    die(var_dump($this->errors));
}

Gerçekten çıplak kemikleri iskelet:

$errors = array();

function add_error($message, $die = false) {
  global $errors;
  $errors[] = $message;
  if ($die) {
    die(implode("\n", $errors));
  }
}
  1. Mevcut için hatalar ekleme $_SESSION
  2. cache, XML ya da depolama her türlü yeni hataları ekleme

Kod 'durur' eğer:

/ / Kod hatası oluşur

die(print_r($errors));

Sen içeren bir hile kullanabilirsiniz do{}.

do {
    if(something) {
        // add error
    }
    if(something_else) {
        // add error
        break;
    }
    if(something) {
        // add error
    }
}while(0);

// check/print errors

Notice break, you can use it to break out of the do scope at any time, after which you have the final error returning logic. Or you could just what's inside do{} inside a function, and use return instead of break, which would be even better. Or yes, even better, a class with a destructor.