Yöntemlerinde tüm değişkenler nesne özellikleri olması gerekiyor?

0 Cevap php

Ben OO PHP öğrenme yaşıyorum ve kodlama uygulamaları düz bazılarını almak için çalışıyorum. İşte ben hata için kullanan (ve istisna) işleme ediyorum bazı kod kırpılmış bir versiyonu:

final class MyErrorExceptionHandler {

    private $level = array(); // error levels to be handled as standard errors
    private $path = array(); // full path to file
    private $path_short; // filename plus working dir

    public function myErrorHandler($severity, $message, $file, $line) {
        if (error_reporting() & $severity) { // error code is included in error_reporting
            $this->level = array(E_WARNING => 'warning',
                E_NOTICE => 'notice',
                E_USER_WARNING => 'user warning',
                E_USER_NOTICE => 'user notice');
            if (array_key_exists($severity, $this->level)) { // handle as standard error
                /*$this->severity = $severity;
                $this->message = $message;
                $this->file = $file;
                $this->line = $line;*/
                $this->printMessage($severity, $message, $file, $line);
            } else { // fatal: E_USER_ERROR or E_RECOVERABLE_ERROR use php's ErrorException converter
                throw new ErrorException($message, 0, $severity, $file, $line);
            }
        }
    } // fn myErrorHandler

    private function printMessage($severity, $message, $file, $line) {
        echo ucfirst($this->level[$severity]) . ': ' . $message;
        $this->shortenPath($file);
        echo ' in ' . $this->path_short . ' on line ' . $line;
    } // fn printMessage

    private function shortenPath($file) {
        $this->path_short = $file;
        $this->path = explode(DIRECTORY_SEPARATOR, $file);
        if (count($this->path) > 2) { // shorten path to one dir, if more than one dir
            $this->path_short = array_pop($this->path); // filename
            $this->path_short = end($this->path) . DIRECTORY_SEPARATOR . $this->path_short; // dir+file
        }
    } // fn shortenPath

} // cl MyErrorExceptionHandler

Ben terminoloji üzerinde% 100 değilim, çünkü bu sorunun başlık biraz kapalı muhtemelen. Temelde ben bir şeyler anlamaya çalışıyorum.

  1. Bu hakkı açıkça $level beyan ve $path diziler olarak mı?
  2. $level olduğu gibi ilan edilmesi gerektiğini (ve yapılan $this->level)? Eğer öyleyse, ben akıllıca bir yerde değerini (E_WARNING vb) atadınız? Yapıcı (burada gösterilmemiştir) akıllı bir seçim olacaktır?
  3. Note the commented block in myErrorHandler(). Originally I had declared all of these properties at the top of the class, and then called $this->printMessage() ileout any parameters. Which is the more correct way? If I keep the code as is, would I want to then use $this->severity = $severity etc. inside printMessage()?
  4. Yani, daha iyi olurdu:

değiştirmek

$this->shortenPath($file);
echo ' in ' . $this->path_short . ' on line ' . $line;

ile

$path_short = $this->shortenPath($file);
echo ' in ' . $path_short . ' on line ' . $line;

sonuçta, ve bir geri dönüş değeri vermek shortenPath()?

I realize this is a mishmash of several different questions, but what I'm trying to get at is a common inquiry about the proper style of declaring/using variables/properties, specifically when dealing ile methods.

Özetlemek gerekirse: When should I use $this->foo = $foo

0 Cevap