Variable an Funktion in Class übergeben

rflx

Erfahrenes Mitglied
Hallo zusammen,

da ich noch nicht gross mit Klassen gearbeitet habe, habe ich ein kleines Problem. Ich will zwei Variablen in einer Funktion einer Klasse übergeben. Im moment sieht es bei mir so aus:

Ich includiere die class.php in einer upload.php Datei:
PHP:
$width = '400';
$height = '200';

include_once 'class.php';

Später will ich die zwei Variablen ($width, $height) in die class.php übergeben.
Die class.php sieht so aus:
PHP:
class upload {

var $image_x;
var $image_y;

function init() {
$this->image_x = '?';		// 400
$this->image_y = '?';		// 200
}
}
Wie kann ich jetzt die zwei Variablen ($width, $height) in die Funktion init() übergeben damit die '?' (Fragezeichen) mit dem Wert ($width, $height) übernommen werden?

Danke im Voraus für die Hilfe.

Gruss rflx
 
Hi,

so:

PHP:
$img_upload = new upload;
$img_upload->init($width,$height);

PHP:
class upload {

var $image_x;
var $image_y;

   function init($width,$height) {
        $this->image_x = $width;
        $this->image_y = $height;
   }
}

Gruß Baum


EDIT:
Will ned Klugen, oder so.... hat mir aber damals auch geholfen:
http://www.phpbar.de/w/Klasse
 
Zuletzt bearbeitet:
Hi,

also erstmal definierst du eine Klasse im Stiel von PHP5

PHP:
class Upload { 

private $image_x; 
private $image_y; 

public function init($width, $hight) { 
$this->image_x = $width;        // 400 
$this->image_y = $hight;        // 200 
} 
}
 
Zuletzt bearbeitet:
Naja, ... wenn bei ihm aber 4 und nicht 5 läuft?
Ich arbeite auch mit 5 und kann es nur empfehlen, wenn es aber der Server oder sonstige Scripte einfach nicht zulassen...
 
Hi Der_baum & ne0hype

Danke für die Antworten.

@Der_baum: Was wird bei dieser Syntax genau erzeugt und wo muss ich das einfügen?
PHP:
$img_upload = new upload; 
$img_upload->init($width,$height);

@ne0hype: Das mit dem Deklarieren funktioniert irgendwie nicht. Bekomme die Fehlermeldung:
Code:
Fatal error: Cannot redeclare upload::$image_x in C:\wamp\www\en\admin\includes\inhalt\uploader\class.php on line 364
Muss ich da noch zusätzlich etwas deklarieren?

EDIT: PHP5 läuft.

Gruss rflx
 
Hi,

EDIT: PHP5 läuft.
dann hat ne0hype natürlich recht. Schreibe bitte alles soweit auf PHP5 um. Wie und was du zu tun hast, kannst du aus dem o.g. Link entnehmen.
Um mal Anzufangen, was ja auch ne0hype eigentlich schon getan hat:

PHP:
class Upload {  

private $image_x;
private $image_y;

	public function init($width, $height) { 
		$this->image_x = $width;
		$this->image_y = $height;
	}
}


Was wird bei dieser Syntax genau erzeugt und wo muss ich das einfügen?

Einfügen musst du den Code an der Stelle, wo er ausgeführt werden soll.
Mit "new" leitest du eine Neue Instanz deiner Klasse ein. Um mich nicht mit fremden Lorbeeren zu schmücken, Auszug aus php.net:
Um eine Instanz einer Klasse zu erzeugen, muss ein neues Objekt erzeugt und einer Variablen zugewiesen werden. Bei der Erzeugung wird das Objekt immer zugewiesen, außer wenn das Objekt einen definierten Konstruktor besitzt, der aufgrund eines Fehlers eine Exception wirft. Klassen sollten vor ihrer Instantiierung definiert werden (in manchen Fällen ist dies eine Notwendigkeit).

Und mit
PHP:
$img_upload->init($width,$height);
rufst du eine Funktion innerhalb deine Klasse auf, verbessert mich wenn ich was falsches sage.

Hier steht eigentlich alles was mit OOP unter PHP5 zu tun hat, wenn du weitere Fragen hast, helfen wir dir gerne weiter. -> http://de.php.net/oop5


Gruß Baum
 
Zuletzt bearbeitet:
Hi Der_baum,

Vielen Dank für die Infos.
Habe aber eine kleine Frage: muss ich die ganze Klasse umschreiben oder nur die betreffende Funktion und Variablen? Weil meine Class hat 1863 Zeilen. *g*

Freundliche Grüsse

rflx
 
Zuletzt bearbeitet:
Hallo!

Naja, der Umstieg wird sich sicherlich nicht nicht Lohnen.
Du solltest dich Grundsätzlich für eine PHP Version und für eine Programmier-Version (nicht ein misch-masch aus PHP 4 und 5) entscheiden.
Optionen, du passt die Komplette Klasse an PHP 5 an, oder setzt den Server auf PHP4 runter (eher abzuraten).
Es gibt natürlich noch eine Variante, die werde ich aber nicht nennen da es absolut keinen Sinn gibt und ich nicht Verprügelt werden will! ;)


Gruß aus München,
Baum
 
haha ;)

kannst mir ja eine msg schreiben ;)

Ist es wirklich so schwer zwei Variablen in eine Klasse zu übernehmen?

Gruss rflx
 
Ha nein...
PHP:
$img_upload = new Upload;
$img_upload->init($width,$height);

und schon hast du die Variablen in deiner Klasse
 
Zurück