Fabian St.: /OOP Pseudovariable $this

Beitrag lesen

Hi!

Mit der Pseudovariable $this kann ein Objekt bekanntlich auf seine eigenen Instanzvariablen und Methoden zugreifen. Jetzt habe ich mir mal eine ziemlich einfache Klasse geschrieben, die die Dateien eines Verzeichnis in ein Array schreibt [1]:

  
class Dir2Array  
{  
 private $dir;  
 private $_files = array();  
 private $file;  
 private $handle;  
  
 public function __construct($path)  
 {  
  $this->dir = $path;  
  $this->handle = opendir($this->dir);  
 }  
  
 public function browse()  
 {  
  
  while(($this->file = readdir($this->handle)) !== FALSE)  
  {  
   if($this->file != '.' && $this->file != '..')  
   {  
    $this->_files[] = $this->file;  
   }  
  }  
  
  return $this->_files;  
 }  
  
 public function __destruct()  
 {  
  closedir($this->handle);  
 }  
}  

Mein Frage ist nun, warum die Funktion auch das tut, was sie soll, wenn man z.B. schreibt:

  
 if($file != '.' && $file != '..')  
   {  
    $_files[] = $file;  
   }  
  

Hier lasse ich das $this weg und das Objekt sollte doch eigentlich nicht mehr auf die Variablen zugreifen können. Man erhält im Übrigen auch keinen Fehler/Warnung/Notice angezeigt[2].

Wie ist das möglich?

Grüße,
Fabian St.

[1] Sorry, für soviel Quelltext, aber so glaube ich ist es einfacher, das
    Problem nachzuvollziehen.
[2] auch bei error_reporting(E_ALL) und ini_set('track_errors', 1)

--
Meine Website: http://fabis-site.net
--> XHTML, CSS, PHP-Formmailer, Linux
---------------------
fabi@erde ~# whatis spam
spam: nothing appropriate
---------------------
Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)