ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
294
294
EMPFEHLEN
-
Hallo,
ich hab mal eine Frage zu OOP.
Ich möchte ein Script schreiben (einfach zum lernen), welches eine Variable in einer Klasse ändert und dann die Klasse ausführt und die Variable ausgibt.
(Ich verzichte hier absichtlich auf die Verwendung von Parametern [außer auf einen].)
Dazu muss man sagen, das die Klasse "MyClass()" die Verwaltungsklasse für alle anderen Klassen ist. Es wird also ein wenig rekursiv
Soweit bin ich schon:
datei1.php:
MyClass() relevanter Ausschnitt, wo der Fehler sein könnte:PHP-Code:$class = new MyClass("TestClass");
$class->getParam("foo=bar");
$content = $p=getContent();
Und nun die TestClass():PHP-Code:public function getParam($param) {
$p = explode("=",$param);
$name = $p[0];
$this->pClass->$name=$p[1];
//$this->pClass wird im __constructor mit "TestClass" belegt, oben in datei1.php wird dieser Parameter als einziger übergeben.
}
Wenn ich mal testweise ein paar echos an relevanten Stellen einbaue, um zu sehen, was das Script so übergibt schreibt er folgendes:PHP-Code:<?php
class TestClass {
public $foo; //ist definiert, um zu ändern
function __constructor() {
}
function run() {
return "foo: ".$this->foo;
}
}
Code :1 2 3
TestClass initialisiert... Parameter: TestClass -- foo=bar Hole Content von TestClass
Doch als Ausgabe kommt nur:
Code :1
foo:
Mir kommt es also so vor, als würde der Wert nicht richtig gesetzt, denn er liest die Variable nicht aus, tu ich jedoch in der Funktion getParam() ein echo $this->pClass->$name dann erscheint der gewünschte Inhalt "bar".
Ich weiß nicht, wo der Fehler stecken könnte, könnt Ihr mir helfen?
Danke im vorraus!
Gruß.
solar22Gruß.
solar22
-
Hab mal versucht dein Ding nachzubauen. Bei mir funktioniert es
Ach, anstelle von __constructor() solltest du __construct() verwenden, damit du einen Konstrukteur haben willstPHP-Code:<?php
class TestClass {
public $foo; //ist definiert, um zu ändern
public function run() {
return "foo: ".$this->foo;
}
}
class MyClass {
public function __construct($className){
$this->pClass = new $className;
}
public function getParam($param) {
$p = explode("=",$param);
$name = $p[0];
$this->pClass->$name=$p[1];
}
}
$class = new MyClass('TestClass');
$class->getParam("foo=bar");
echo $class->pClass->run();
?>---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
18.05.10 15:40 #3KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
@yaslaw:
Dein Beispielcode hat mir meinen Fehler gezeigt.
Ich hab in meiner MyClass einen Fehler gehabt, das er leider die Klasse neu definiert und somit die Erstzung des Parameters ignoriert
Jetzt gehts.
So leicht passieren Fehler
Danke dir!Gruß.
solar22
Ähnliche Themen
-
bei <input type="file"> den "Durchsuchen" text verändern?
Von Bomber im Forum HTML & XHTMLAntworten: 7Letzter Beitrag: 29.09.06, 22:45 -
"On-the-Fly" neue Klassen erzeugen/verändern ohne "selbst" Bytecode zu manipulieren..
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 07.06.05, 20:43 -
Übersicht über "alle" öffentlichen Konstanten "aller" Klassen
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 14.02.05, 19:31 -
Bei <input type="file" den "Durchsuchen.." text verändern?
Von Bomber im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 05.06.02, 13:00 -
licht durch glas, von außen ja, aber von innen nach außen?
Von methodus im Forum 3D Studio MaxAntworten: 5Letzter Beitrag: 07.04.02, 20:12





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren