Syntax-Verständnis

Hektik

Erfahrenes Mitglied
Hallo!

Ich habe gerade versucht, die "directorylist.class.php" von Dennis Wronka zu verstehen. Die Klasse erzeugt ein Array mit der Verzeichnisstruktur eines vorgegebenen Verzeichnisses.

Zur Info:
PHP:
<?php
class directorylist
{
	var $name;
	var $subdirs;
	var $files;
	
	function directorylist($dirname,$sort=false,$limitrecursion=false,$recursiondepth=0)
	{
		$this->name=$dirname;
		$this->subdirs=array();
		$this->files=array();
		$dir=opendir($dirname);
		while ($file=readdir($dir))
			{
				if (($file!=".") && ($file!=".."))
					{
						if (is_dir($dirname."/".$file))
							{
								if (($limitrecursion==false) || ($recursiondepth>-1))
									{
										$this->subdirs[]=new directorylist($dirname."/".$file,$sort,$limitrecursion,$recursiondepth-1);
									}
							}
						else
							{
								if (($limitrecursion==false) || ($recursiondepth>-1))
									{
										$this->files[]=$file;
									}
							}
					}
			}
		closedir($dir);
		if ($sort==true)
			{
				sort($this->files);
				rsort($this->subdirs);
			}
	}

	function findsubdirbyobject($needle)
	{
		for ($x=0;$x<count($this->subdirs);$x++)
			{
				if ($this->subdirs[$x]==$needle)
					{
						return $x;
					}
				else
					{
						$val=$this->subdirs[$x]->findsubdirbyobject($needle);
						if ($val!=-1)
							{
								return $x.','.$val;
							}
					}
			}
		return -1;
	}

	function findsubdirbyname($needle)
	{
		for ($x=0;$x<count($this->subdirs);$x++)
			{
				if ($this->subdirs[$x]->name==$needle)
					{
						return $x;
					}
				else
					{
						$val=$this->subdirs[$x]->findsubdirbyname($needle);
						if ($val!=-1)
							{
								return $x.','.$val;
							}
					}
			}
		return -1;
	}

	function findsubdir($needle)
	{
		$vartype=gettype($needle);
		if ($vartype=="string")
			{
				return $this->findsubdirbyname($needle);
			}
		elseif ($vartype=="object")
			{
				return $this->findsubdirbyobject($needle);
			}
		else
			{
				return -1;
			}
	}
}
?>

Meine Frage ist jetzt:

Was bedeutet z.B. solch eine Zeichenkette:

PHP:
$images->subdirs[$_GET['gallery']-1]->files[$_GET['image']-1]

ich kenne if, else, isset, =, ==, !=, &&, || und so weiter, aber was bedeutet: "->" ?

Danke schon mal im Vorraus für die Mühe :P
 
Mit -> wird eine Variable oder Funktion innerhalb eines Objektes angesprochen.

Das von Dir gepostete Beispiel
PHP:
$images->subdirs[$_GET['gallery']-1]->files[$_GET['image']-1]
greift auf eine Datei zu welche sich in einem Unterverzeichnis befindet. Dieses Unterverzeichnis wird wieder durch ein Objekt der Klasse DirectoryList repraesentiert und befindet sich halt im Array subdirs innerhalb des Objektes $images.
Also mal ganz allgemein:
In einem Objekt der Klasse DirectoryList hast Du 2 Arrays, subdirs und files.
Das Array files ist ganz schlicht die Liste der in dem vom Objekt repraesentierten Verzeichnis gefundenen Dateien.
Das Array subdirs jedoch ist ein Array mit weiteren Objekten der Klasse directorylist, repraesentativ fuer die gefundenen Unterverzeichnisse, inklusive deren Inhalt.

Ich hoffe, dass war einigermassen verstaendlich zusammengedichtet.
 
Der Dennis wieder :) Dankeschön :)

Dann werd ich jetzt wohl lernen müssen, was mit Klassen auf sich hat, das hab ich nämlich noch nicht gehabt. Haste da vllt noch einen schönen Link für mich? Ansonsten google ich einfach mal drauf los :)
 
Hektik hat gesagt.:
Der Dennis wieder :) Dankeschön :)

Dann werd ich jetzt wohl lernen müssen, was mit Klassen auf sich hat, das hab ich nämlich noch nicht gehabt. Haste da vllt noch einen schönen Link für mich? Ansonsten google ich einfach mal drauf los :)
Klassen sind am Anfang sowieso immer schwer zu verstehen.
Das heißt man versteht am Anfang gar nicht, was das bringen soll etc.
Aber wenn man es einmal verstanden hat, dann sieht man auch, wie praktisch das Ganze ist.
Klassen sind ja dazu da, um das den Programmiercode so zu gestalten, dass er verständlicher ist (vorallem übersichtlicher).

http://tut.php-q.net/klassen.html
Vielleicht hilft dir das ;)
Das ist ein Beispiel mit Meerschweinchen, klingt vielleicht merkwürdig und Nutzlos, ist aber eigentlich ganz gut.
 
Zurück