public function loadDataFromTableOrView($resultItemTypeName, $tableName, SqlWhere $where = NULL) { $sql = "SELECT "; $properties = get_class_vars($resultItemTypeName); $propertyIndex = 0; foreach ($properties as $propertyName => $propertyValue) { $sql .= $propertyIndex == 0 ? $propertyName : ", " . $propertyName; $propertyIndex++; } $sql .= " FROM " . $tableName; if ($where == NULL) { $sql .= ";"; } else { $sql .= " WHERE " . $where->getSql() . ";"; } $statement = $this->db->prepare($sql); if ($where != NULL) { $values = $where->getBindParamArray(); $arr = array(); for ($i = 0; $i < count($values); $i++) { if ($i == 0) { $arr[$i] = $values[$i]; } else { $arr[$i] =& $values[$i]; } } call_user_func_array(array($statement, "bind_param"), $arr); } $statement->execute(); return $this->bindResultsAndCreateResultItems($statement, $resultItemTypeName); }