Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Exceptions
Forum PHP.pl > Forum > PHP > Object-oriented programming
piotrooo89
Chce zrobić obsługę błędów i natrafiłem na taki problem:

  1. <?php
  2. abstract class Loader
  3. {
  4.    abstract public function load();
  5. }
  6. class Loader_File extends Loader
  7. {
  8.    public $errors =
  9.        array(
  10.        'no_file' => 'Plik nie istnieje',
  11.        'wrong_separator' => 'Nie podano separatora'
  12.        );
  13.    public function __construct($file, $separator)
  14.    {
  15.        if (empty($separator))
  16.            throw new Exception($errors['wrong_separator']);
  17.  
  18.        $this->file = $file;
  19.        $this->sep = $separator;
  20.    }
  21.    public function load()    
  22.    {
  23.        if (!file_exists($this->file))
  24.            throw new Exception($errors['no_file']);
  25.            
  26.            $string = file_get_contents($this->file);
  27.            $mails_file = explode($this->sep, $string);
  28.            return $mails_file;
  29.    }
  30. }
  31. ?>


to moja klasa Loadera. W tablicy mam napisane błędy. I nie chcą się one wyświetlać tzn jak napisze tak:

  1. <?php
  2. throw new Exception('Jaks blad');
  3. ?>


to wszystko jest OK. I teraz jak zrobić aby wczytywał te błędy z tablicy.
erix
Zrób sobie klasę, która będzie rozszerzać Exception. Manual się kłania. winksmiley.jpg
piotrooo89
wiem że można rozszerzać Exceptions ale dlaczego nie wpisuje mi w takiej postaci:

  1. <?php
  2. throw new Exception($errors['no_file']);
  3. ?>


a w takiej już działa:

  1. <?php
  2. throw new Exception('No file');
  3. ?>


?

#EDIT
a co ciekawe tak już działa:

  1. <?php
  2. public function __construct($file, $separator)
  3.    {
  4.        $errors =
  5.        array(
  6.        'no_file' => 'Plik nie istnieje',
  7.        'wrong_separator' => 'Nie podano separatora'
  8.        );
  9.        if (empty($separator))
  10.            throw new Exception($errors['wrong_separator']);
  11.  
  12.        $this->file = $file;
  13.        $this->sep = $separator;
  14.    }
  15. ?>
erix
Zasięg zmiennych w klasach. Patrz: keyword $this.
piotrooo89
zapomniałem o tym wstydnis.gif dzięki Przemek winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.