現在、私はPHPのPDOクラスを少し使用するデータベースクラスをプログラミングしていますが、特定のアプリケーションを少し簡単にするための簡単な機能をいくつか追加したいと思います。PHPオブジェクト戻り値
次の擬似コードでは、私がどこに行くのかを見ることができます。あなたは$結果変数を見ることができるように
<?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
}
:この例では唯一の問題は、$結果変数は、私がスクリプトでさらに上のやっているいくつかのもののcomparisationのために使用することはできない対象、ということです私が比較をしているときにオブジェクトであってはいけません。__toStringを使って文字列にすることができます。しかし、私はそれが他の型、主に配列またはnullであることを望みます。
可能な場合は、どうすればそのような作業をすることができますか(あまりにも多くの手間を要すると思われます)。
誰かが私を正しい方向に向けることができますか、あるいは動作するはずのコードを与えたり、現在のクラスに合わせて変更することができますか?
ええと、私は前もって問題を解決しようとしていますが、あなたのコードで$ dsを返すときにはまだ__get()を使用できません。次のようになります。 $ x = $ y - > FetchRow(); echo $ x; //配列 echo $ x - > id; //データベースからの 'id'カラム – Stefan
grossvogelのtoArray関数を使用したソリューションを使用しました。ありがとうございました – Stefan