3
これは私のユーザークラスです:PHPのget_object_vars
<?
require_once(dirname(__FILE__).'/DB.class.php');
require_once(dirname(__FILE__).'/Model.class.php');
class Benutzer extends Model
{
private $id;
private $loginName;
private $loginPassword;
private $eMail;
private $rights;
private $mailchange;
private $name;
private $vorname;
private $matrikelnr;
private $gruppe;
/**
* @TODO PhpDoc
*/
protected function __construct($id = null)
{
if ($id !== null)
$this->load($id);
}
/**
* @TODO PhpDoc
*/
public static function factory($id = null)
{
if ($id !== null && is_integer($id)){
return new Benutzer($id);
} else {
return new Benutzer();
}
}
//getter and setter...
}
これはユーザクラスによって継承される抽象クラスです:私は$ obj-> getParameters呼び出す
<?php
require_once(dirname(__FILE__).'/RowDataGateway.interface.php');
abstract class Model implements RowDataGateway
{
public function getParameters()
{
return get_object_vars($this);
}
/**
* @TODO PhpDoc
*/
public function setParameters(array $values, $override = true)
{
foreach ($values as $key => $val) {
if ($override){
if (property_exists(get_class($this), $key))
$this->$key = $val;
}
else {
if (property_exists(get_class($this), $key) && !isset($this->key))
$this->$key = $val;
}
}
}
/**
* @TODO PhpDoc
*/
public function load($id, $override = true)
{
$res = QueryBuilder::selectQuery($this);
$result = DB::getInstance()->query($res['query'], array('id' => $id));
$this->setParameters($result, $override);
return $this;
}
/**
* @TODO PhpDoc
*/
public function save()
{
if (isset($this->id)){
$res = QueryBuilder::updateQuery($this);
if (DB::getInstance()->update($res['query'], $res['params'])){
return $this;
}
}
else {
$res = QueryBuilder::insertQuery($this);
if ($id = DB::getInstance()->insert($res['query'], $res['params'])){
$this->id = $id;
return $this;
}
}
return false;
}
/**
* @TODO Implement
*/
public
function delete()
{
}
}
毎回()関数は、私は(foreachで)空の配列を取得:
public static function insertQuery(Model $obj)
{
//INSER INTO classname (field1,field2,field3) VALUES (val1,val2,val3)
$vars = null;
$query = 'INSERT INTO `'.strtolower(get_class($obj)).'` (';
foreach ($obj->getParameters() as $key => $val) {
if ($key !== 'id')
$query .= $key.',';
}
$query = substr($query, 0, strlen($query) - 1);
$query .= ') VALUES (';
foreach ($obj->getParameters() as $key => $val) {
if ($key !== 'id'){
$query .= ':'.$key.',';
$vars[':'.$key] = $val;
}
}
$query = substr($query, 0, strlen($query) - 1);
$query .= ')';
return array('query' => $query, 'params' => $vars);
}
私はすでにコードと右のoをデバッグしましたbjectは関数に与えられます!
私の間違いはどこですか?
FMK
ありがとう、それは間違いでした! – FMK