Objekt/Klasseninstanzen als Arrays und in der Paramterliste

BoT

Mitglied
Guten Tag

Ich habe da eine Frage zur Instanzbildung von Objekten (class)

Ich weiss aus meinem Buch, dass man eine Instanz eines Objektes durch folgendes erzeugt:
PHP:
 $obj = new klasse();
Das steht in meinem Buch, aber mehr auch nicht.
Zumal ich wirklich keine Ahnung habe wie man Instanzen als Array deklariert ode sie in der Parameterliste einer Funktion deklariert..
Kann jemand kurz erläutern wie es geht, oder vielleicht ein Tutorial zu diesem Thema geben?
Ich wäre für eure Hilfe seeehr dankbar :)

BoT
 
Weiss es den wirklich niemand Entschuldigung für den Doppelpost, aber der Thread ist anscheinend so weit gesunken, dass ihn keiner mehr sieht... Ich weiss ja nicht wie das hier so ist :)
 
is eigentlich ganz einfach
hier mal nen richtiges beispiel

PHP:
<?

/**
wir erstellen unsere klasse Auto also das eigentliche objekt ;)
wir wissen das es eine farbe und eine ps anzahl hatt
da wir die autos aber nicht ändern wollen können wir die setter mal weglassen und stattdessen nen default konstruktion bauen
dieser hatt den vorteil das wir praktisch immer mit 0 initialisierte objekte haben und keine die NULL sind! :)
also dann mal los 
**/
class Auto{
	var $farbe;
	var $ps;

	// das ist der Default der wird immer aufgerufen wenn ein objekt erstellt wird
	// entweder man übergibt ein argument dann bekommt das objekt den wert oder wenn mans
	// auslässt bleibs einfach auf dem default stehen
	function Auto($farbe="#000000",$ps=0){
		$this -> farbe = $farbe;
		$this -> ps = $ps;
	}

	function getFarbe(){
		return $this -> farbe;
	}

	function getPs(){
		return $this-> ps;
	}
}

$meinAuto = new Auto("#ff0000",100);
echo "mein auto ist <span style=\"background-color:".$meinAuto -> getFarbe()." ;width:20px\"></span>";
echo "<br>";
echo "und es hatt ". $meinAuto -> getPs() . "ps";
echo "<hr>";

/*
	wollen wir aber gannnzzz viele autos dann definieren wir uns einfach ein array
*/
$autos = array();
/* da wir ja unterschiedliche haben wollen mach ich nun einfach mal ne for schleife und paar farben*/
$colors = array("#00FF00","#aa99aa","#0000FF","#FFFF00","#FF00FF","#00FFFF","#ACDCBC","#123456","#dedede","#ededed");
for($i=1;$i<10;$i++){
	$autos[] = new Auto($colors[$i-1],$i*30);
}

/* so nun haben wir ganz viele autos in nem array und geben sie nun aus ... :) */
foreach($autos as $value){
	echo "mein auto ist <span style=\"background-color:".$value -> getFarbe()." ;width:20px\"></span>";
	echo "<br>";
	echo "und es hatt ". $value -> getPs() . "ps";
	echo "<hr>";
}

/*
und wenn man nun nicht versteht wieso der ganze heckmeck
dann erstellen wir uns einfach noch ne klasse Person
diese person hatt nen namen + ein auto :)
*/

class Person{
	var $name;
	var $auto;
	
	/*
		leider kann man in php keine objekte neu in methoden referenzieren deswegen gibst 
		hier leider kein neues auto objekt :(
		sonst würde man schreiben
			function Person($name="",$auto=new Auto()){
				$this -> name = $name;
				$this -> auto = $auto;
			}
	
	*/
	function Person($name="",$auto){
		$this -> name = $name;
		$this -> auto = $auto;
	}

	function getAuto(){
		return $this -> auto;
	}
	function getName(){
		return $this -> name;
	}
}
/*
soweit alles klar? ok
nun wollen wir eine person die ein auto hatt :) und das ist dann natürlich total einfach! :)
*/
$franz = new Person("Franz",new Auto("#AEAEAE",460));
/*
was haben wir nun genau gemacht?
wir haben nun ein auto erstellt und das auto gehört unserem franz 
wenn wir nun alles ausgeben können wir natürlich die funktionen von der klasse auto ebenfalls aufrufen
also machen wir mal das
*/
echo "<hr> FRANZ <hr>";
echo "name:". $franz -> getName();
echo "<br>";
$auto = $franz -> getAuto();
	echo "mein auto ist <span style=\"background-color:".$auto -> getFarbe()." ;width:20px\"></span>";
	echo "<br>";
	echo "und es hatt ". $auto -> getPs() . "ps";
	echo "<hr>";

/*
verstanden oder ist etwas unklar=?
source wurde getestet und funktioniert

obj hatt halt den vorteil das man seine programmteile ordentlich trennen kann und nach lust und laune erweitern könnte
ohne sich nun sorgen darum zu machen das irrgend was nicht funktioniert
ausserdem ist es übersichtlicher und zudem leichter für jederman zu benutzen
*/
?>
 
Also muss ich einfach für ein Array von Instanzen schreiben:

PHP:
$objekte = array()
for($i = 1; $i<$irgendwas; $i++)
$objekte[] = new klasse();

Und ein neues Objekt wird einfach an das Array rangehängt? Ui.. das ist in PHP aber sehr viel einfacher als in C :)

Aber wie übergebe ich jetzt so ein Objekt an eine andere Funktion? Einfach
PHP:
function some_func( $objekt )
schreiben?
 
Zuletzt bearbeitet:
genau so

du musst aber drauf achten das die klasse auch includet wird sonst weiß php nichts von dem objekt deswegen schreibste nen php file test.class.php und includest dies
PHP:
<?
class Test{
   var $a = "test";
}

$test = new Test();

function test($test){
echo $test -> a;
}
?>

der einzige unterschied in c und php ist das php arrays wie einen vector in java behandelt
und du deshalb nicht die grösse des arrays angeben musst
zudem kannste in php auf einen string wie auf ein array zugreifen
$test = "hallo"
und $test[1] wäre demzufolge dann das 'a'
 
Zuletzt bearbeitet:
Zurück