[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Verschachteltes OOP - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Meusi
Beiträge: 158
Registriert: 18. Mär 2009, 16:18

Verschachteltes OOP

2. Apr 2013, 12:51

Hallo Leute :)

ich hab ein kleines Problem :)

ich hab eine Form Klasse wo spezielle Inputs etc generiert werden, dazu gibts die Funktion auch Select-Felder hinzuzufügen. Das ganz sieht so aus:

Code: Alles auswählen

$form = new form(...);
$form->addSelect('selectname');
$form->addSelect->add('name', 'value');
$form->addSelect->add('name', 'value');
$form->addSelect->add('name', 'value');
$form->addSelect->out();
der PHP Code dazu ist:

Code: Alles auswählen

class form{
var $ausgabe = array();
var $addSelect;
/* .... */
function addSelect($name, $selected = '', $attributes = array()) {
	$selected = ($this->get($selected)) ? $this->get($selected) : $selected;
	$this->addSelect = new SelectField($name, $selected, $this->temp_head, $attributes);	
}
/* .... */
}

class SelectField extends form {

var $chache = array(); #Zwischenspeichern

function add($name, $value, $attributes = array()) {
if($name == $this->selected  && $this->selected != false) $attributes['selected'] = 'selected';		
$this->chache[]= $this->add_field($name, $value, 'option', $attributes); #add_field kommt von form
}

function out() {
		
		global $form;
		
		$return = '';
		foreach($this->chache as $val) {
			$return .= $val;	
		} 
		
		$form->ausgabe[] = '<div class="form_list>
			'.$this->temp_head.'
			<select name="'.$this->name.'" '.$attributes.'>
			'.$return.'
			</select>
		</div>';
		
		$this->temp_head = '';
	}

}
Mein Problem: durch das global $form beim out() ist der Benutzer dazu gezwungen die Klasse mit $form zu starten/cachen. Wie kann ich wieder auf die Oberklasse zurückgreifen? parent:: würde ja hier nicht funktionieren.

Optimierung: Kann man auch irgendwie das $form->addSelect->out(); weglassen? sodass er das am Ende autoamtisch in die Variable speichert?

Würd mich tierisch über Antworten freuen :)

Gruß Meusi
Folgende Threads stehen offen:

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Verschachteltes OOP

2. Apr 2013, 13:08

Hi Meusi,

warum nimmst du nicht die rex_form- oder rex_xform-Klasse? Das würde ich an deiner Stelle eindeutig bevorzugen.
Meusi hat geschrieben:Mein Problem: durch das global $form beim out() ist der Benutzer dazu gezwungen die Klasse mit $form zu starten/cachen. Wie kann ich wieder auf die Oberklasse zurückgreifen? parent:: würde ja hier nicht funktionieren.
$this würde funktioniert. Klassenvariablen werden an die Kindklasse vererbt.
Meusi hat geschrieben:Optimierung: Kann man auch irgendwie das $form->addSelect->out(); weglassen? sodass er das am Ende autoamtisch in die Variable speichert?
Eigentlich sollte es am Ende nur eine out- oder show-Methode geben, die die Ausgabemethoden der angehängten Elemente aufruft.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Meusi
Beiträge: 158
Registriert: 18. Mär 2009, 16:18

Re: Verschachteltes OOP

2. Apr 2013, 13:14

hey :)

wenns Redaxo wär, würde ich in ein anderes Forum-abteil posten :)

geh davon aus, dass der Code 100% von mir stammt :)

mit $this würde aber in der klasse SelectField gespeichert. ich möchte aber das er auf die "Obere Klasse" das speichert :)

Wegen der Optimierung: war bestimmt auf Redaxo bezogen oder?

hier sieht die ganze Datei:

https://github.com/Sysix-Coding/Sysix-C ... m/form.php

denk dir nix dabei, ist nur immoment Test-Phase und programmiere das zum Spaß :)

Mfg Meusi
Folgende Threads stehen offen:

Meusi
Beiträge: 158
Registriert: 18. Mär 2009, 16:18

Re: Verschachteltes OOP

4. Apr 2013, 10:52

*vorsichtiger* push :roll:
Folgende Threads stehen offen:

Zurück zu „Sonstiges“