Handbuch:ApiResult.php

From mediawiki.org
This page is a translated version of the page Manual:ApiResult.php and the translation is 100% complete.

Die ApiResult-Klasse stellt das Ergebnis der API-Befehle dar.

Sie umschließt einfach eine verschachtelte array()-Struktur und fügt einige Funktionen hinzu, um die Veränderungen des Arrays zu vereinfachen. Während verschiedene Module ausgeführt werden, fügen sie unterschiedliche Informationsteile zum Ergebnis hinzu und strukturieren es so, wie es an den Client übergeben wird.

Jedes Subarray kann entweder ein Wörterbuch sein - Schlüssel-Wert-Paare mit einzigartigen Schlüsseln oder Listen, in denen die Objekte mit $data[] = $value-Notation hinzugefügt werden.

Es gibt zwei Spezial-Schlüsselwerte, die ändern, wie die XML-Ausgabe generiert wird:

  • '_element' - Dieser Schlüssel legt den Markierungsnamen für den Rest der Elemente in dem aktuellen Array fest. Es wird nur eingesetzt, wenn der Formatierer für getNeedsRawData() true zurückgegeben hat.
  • '*' - Dieser Schlüssel hat nur für den XML-Formatierer eine besondere Bedeutung und wird wie für alle anderen ausgegeben. In XML wird es zum Inhalt des aktuellen Elements.

Funktionen

addValue()

addValue ( $path, $name, $value, $flags = 0 )

Fügt den Wert zu den Ausgabedaten in dem angegebenen Pfad hinzu.

Der Pfad kann ein indiziertes Array sein, wobei jedes Element den Zweig angibt, zu dem der neue Wert hinzugefügt werden soll. $path array('a','b','c') ist äquivalent zu data['a']['b']['c'] = $value. Wenn $path null ist, wird der Wert in das Ursprungsverzeichnis eingefügt. Wenn $name leer ist, wird $value als nächstes Listenelement data[] = $value hinzugefügt.

Beispiel

class ApiFoo extends ApiBase {
	public function execute() {
		$apiResult = $this->getResult();
		$r['result'] = 'Success';
		$r['bar'] = 'baz';
		$apiResult->addValue( null, $this->getModuleName(), $r );
	}

	public function getResultProperties() {
		return array(
			'foo' => array(
				'result' => array(
					ApiBase::PROP_TYPE => array(
						'success',
						'warning',
						'needtoken'
					)
				),
				'bar' => array(
					ApiBase::PROP_TYPE => 'string',
					ApiBase::PROP_NULLABLE => true
				),
			)
		);
	}
}

Siehe auch