print_r filtern

Dark Ranger

Erfahrenes Mitglied
Ich mache manchmal bei meinem Projekt print_r ausgaben um zu debuggen, natürlich finden diese Ausgaben nur auf Localhost statt, allerdings könnte es ja mal passieren, dass ich es irgendwo vergesse rauszunehmen und dadurch dann so eine Ausgabe über das Internet erreichbar ist.
PHP:
function debugprint($var){
		echo '<pre>';
		echo '<br>BEGIN DEBUGPRINT<br>';
		print_r(array_filter(array($var),"isNotDB"));
		echo '<br>END DEBUGPRINT<br>';
		echo '</pre>';
		echo '<br>';
	}

Diese Funktion benutze ich zur Ausgabe. Zum Beispiel schaue ich mir damit auch Objekte an, diese Objekte haben allerdings meist ein DB-Objekt, hier will ich aber nicht, dass dieses ausgegeben wird, kann man das ganze irgendwie unterbinden? Habe es schon mit array_filter probiert, allerdings hat das nicht funktioniert. Hat irgendwer eine Idee?
 
Wenn du die Verbindungsdaten wie Adresse, Benutzername und -kennwort nicht im Objekt speicherst, sollte es auch keine Probleme geben, wenn Informationen dieses Objekts ausgegeben werden.
 
Diese Daten werden nicht gespeichert, allerdings andere Sachen (last Statement usw.) es ist halt nervig wenn sowas immer angezeigt wird
 
Du könntest eine Konstante verwenden, um die Ausgabe zu steuern, etwa:
PHP:
function debugprint($var)
{
	if (!defined('DEBUG_MODE') || !constant('DEBUG_MODE')) {
		return false;
	}
	// …
}
 
array_filter() arbeitet wirklich nur mit Arrays und nicht mit Objekten.
array($var) bringt dir da recht wenig, da du auf diesem Wege nur das komplette Objekt filtern kannst und nicht seine Variablen.

Lösung:
Übergebe array_filter() stattdessen das Objekt per
Code:
get_object_vars($var)
...das ist ein echter Array, so wie du ihn benötigst :)

Was deine Vergesslichkeit betrifft: zur Sicherheit könntest du innerhalb der Funktion erstmal den HTTP_HOST prüfen, ob dieser auch der Localhost ist.
 
Danke für die Info, geht allerdings noch nicht so wie ich es haben will, weil auch innerhalb des entstandenen Arrays muss wieder geprüft werden, ob objekte vorhanden sind.

Gibt es keine Funktion mit der ich überprüfen kann ob die variable ein Objekt enthält?
 
Nö, du kannst nur ermitteln, ob eine Variable ein Objekt ist
[phpf]is_object[/phpf]

Wenn sich die Objekte in Arrays befinde, kommst du nicht umhin, die Arrays zu Durchlaufen.
 
Danke, so eine Funktion habe ich gesucht, habe auf php.net geschaut, aber sowas nicht gefunden, muss wohl bisschen durcheinander gewesen sein ^^
 
Das mit dem get_object_vars geht gar nicht, dies liefert mir ja nur die öffentlichen Elemente, was ich aber eigentlich nicht will.

Es sollen nur alle Objekte des Typs DB rausgefiltert werden, egal an welcher Position das ganze ist.

Habe jetzt schon das eingebaut, das eine Ausgabe nur erfolgt wenn das ganze auf localhost aufgerufen wird, allerdings interessiert es mich einfach und ich will wissen ob es möglich ist
 
Zurück