PHP-Objekt Rückgabewert
Derzeit bin ich der Programmierung einer Datenbank-Klasse, die macht ein wenig PHP ' s PDO-Klasse, aber ich möchte noch hinzufügen, dass einige einfache Funktionen für die Programmierung einer bestimmten Anwendung ein wenig einfacher.
Nun In dem folgenden Stück pseudo-code, können Sie sehen, wohin ich gehe. Das einzige problem in diesem Beispiel ist, dass die $result-variable ist ein Objekt, das nicht verwendet werden kann für comparisation einige Sachen, die ich mache, weiter im Skript:
<?php
class Database
{
public function FetchRow ( $query )
{
//.. do some stuff, and make a $result variable
return DatabaseStatement ( $result );
}
}
class DatabaseStatement
{
private $result;
public function __construct ( $query )
{
//.. save result in property etc.
}
public function __get ( $column )
{
//.. check result item
return $this -> result [ $column ];
}
}
$db = new Database;
$result = $db -> Query ( 'SELECT * FROM users WHERE id = 1;' );
if ( $result != null ) //Here $result should be an array OR null in case no rows are returned
{
echo $result -> username; //Here $result should call the __get method
echo '<pre>' , print_r ( $result ) , '</pre>'; //Here $result should be the array, cause it wasn't null just yet
}
Wie Sie sehen können die $result-variable muss nicht ein Objekt sein, wenn ich dabei bin eine comparisation, ich weiß, es kann gemacht werden in eine Zeichenfolge mit __toString. Aber ich möchte es für eine andere Art, meist ein array oder null.
Wie bekomme ich so etwas wie, dass die Arbeit, wenn es möglich ist (sollte möglich sein, ich denke mit zu viel Aufwand)?
Also kann jemand mich in die richtige Richtung, oder vielleicht geben ein Stück code, der funktionieren sollte oder ich ändern kann, passt in meine aktuelle Klasse?
InformationsquelleAutor Stefan | 2009-06-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke ich, werden Sie tun dies in der gleichen Stelle erstellen Sie die DatabaseStatement. So zum Beispiel:
Gut, ich habe Ihre Lösung mit grossvogel die Idee, eine toArray-Funktion, Dank alle
InformationsquelleAutor 0scar
Scheint es mir, dass Sie nur einige Methoden, die machen, was Sie wollen. Stattdessen zwingen Sie die $result-Objekt ein array oder null, um zu überprüfen, ob es leer ist, warum nicht erstellen Sie einfach und rufen Sie eine Methode
isEmpty ()
, die Ihnen sagt, was Sie wissen wollen?Und wenn Sie benötigen ein array, erstellen Sie eine Methode
toArray ()
zurückgibt, was Sie wollen. ODER, noch besser, machen Sie Ihr Objekt implementieren Iterator und/oder ArrayAccess aus der Die Standard-PHP-Library.Verwendet man Ahnung von der toArray-Funktion, und 0scar ' s Methode null zurückgeben ansonsten
InformationsquelleAutor grossvogel
Nicht möglich ist. PHP ermöglicht es Ihnen nicht um die Operatoren überladen.
InformationsquelleAutor troelskn
Verwenden Sie die PDOStatment Klasse und es ist rowCount-Eigenschaft.
InformationsquelleAutor erenon