Ausgabe einer Funktionsrückgabe

_mArc_

Grünschnabel
Ich habe folgende Klasse:

PHP:
class Partner extends AbstractDBClass {

	protected function __construct($result) {
		parent::initialize($result);
	}
 
 	public static function getPartners($down, $up, $free = false, $top = false, $rubricID = 0) {
		$down *= 1;
		$up *= 1;
		$rubricID *= 1;
		
		$rubricSQL = "";
		$specifySQL = "";
		
		if($rubricID != 0)
			$rubricSQL = " AND rubric = " . $rubricID . " ";		
		
		$sql = "SELECT Id, partner, rubric, address, description, active 
				FROM partner 
				WHERE " .
				($free ? "free_partner = TRUE AND " : "") .
				($top ? "top_partner = TRUE AND " : "") .
				"active = TRUE " .
				$rubricSQL .
			   "ORDER BY partner 
				LIMIT " .  $down . ", " . $up . ";";
		
		$ret = new Partner(self::query($sql));
		return $ret;
	}

Meine Frage nun: Wie gebe ich einzelne Eigenschaften aus?
Weil es verhält sich ja nicht wie ein Array sprich:

$ret[1]["description"];

Ich habe allerlei Hilfen durchgelesen über Instanzen, Methoden u.Ä. habe jedoch nicht wirklich etwas dazu gefunden. Ich denke ihr könnt mir mit Leichtigkeit helfen und falls ihr noch gute Seiten/Hilfen zu dem Problem u.Ä. habt interessiere ich mich dafür!:)
 
PHP:
abstract class AbstractDBClass {
	protected static $DB;
	protected $result;
	
	protected function initialize($result) {
    self::initDB();
		$this->result = $result;
	}
 
	public function __invoke($index, $key = null) {
		if($key != null)
			return $this->v($index, $key);
		else {
			$key = $index;
			$ret = array();
			$i = 0;
			foreach($this->result as $partnK => $partV) {
				$ret[$i] = $this->v($i, $key);
				$i++;
			}
			if(count($ret) == 1)
				return $ret[0];
			else
				return $ret;
		}
	}
	
	protected static function query($sql) {
    self::initDB();
    return self::$DB->query($sql);
	}
	
	private function v($index, $key) {
	  # partner => alias name
		$key = $this->alias($key);
		if(isset($this->result[$index][$key]))
			return $this->result[$index][$key];
		else
			return null;
	}
	
	protected function alias($key) {
		return $key;
	}
	
	protected static function escape($input) {
    self::initDB();
		return self::$DB->escapeString($input);
	}
	
	protected static function escapeAll($inputs) {
    self::initDB();
	  $ret = array();
	  foreach($inputs as $input) {
	    $ret[count($ret)] = self::$DB->escapeString($input);
	  }
	  return $ret;
	}
	
	protected static function initDB() {
    if(self::$DB === null) self::$DB = $GLOBALS['DB'];
	}
}
 
Wenn ich das jetzt richtig beurteile, solltest du es so machen können:

PHP:
$partners = Partner::getPartners(...hier_irgendwelche_parameter...);
echo $partners->v(0, 'Id');

Normalerweise solltest du über die v()-Methode an deine Values kommen. Die Resultate der DB-Abfrage landen jedenfalls in der Membervariablen AbstractDBClass::$result, welches ein 2-dimensionales indiziertes Array ist, welches als zweite Dimension die Datensätze des Ergebnisses als assoziatives Array beinhalten.

Das kannst du aber auch sehen, wenn du folgendes machst:

PHP:
$partners = Partner::getPartners(__hier_die_parameter__);
echo "<pre>";
var_dump($partners);
echo "</pre>";

Ich hoffe das is alles korrekt :-)
 
Zurück