我有点困惑。我从未在PHP中过多地使用对象和类,但有人建议我重新使用它编写一些代码。
我要做的是使$auctions成为一个对象属性,同时将所有行数据保存到它。
现在,我做echo $auctions[1]['title'];来响应id=1标题的列表。我希望重新创造它,这样它就会成为一个对象。
这是我目前的密码,
$sqlquery = "SELECT * FROM auctions";
if ($result = $db->query($sqlquery)) {
while ($row = $result->fetch_assoc()) {
$auctions[$row['id']]['id'] = $row['id'];
$auctions[$row['id']]['title'] = $row['title'];
$auctions[$row['id']]['featured_image'] = $row['featured_image'];
$auctions[$row['id']]['description'] = $row['description'];
$auctions[$row['id']]['date'] = $row['date'];
$auctions[$row['id']]['location'] = $row['location'];
$auctions[$row['id']]['highlights'] = $row['highlights'];
$auctions[$row['id']]['catagories'] = $row['catagories'];
$auctions[$row['id']]['notes'] = $row['notes'];
$auctions[$row['id']]['terms'] = $row['terms'];
$auctions[$row['id']]['contact'] = $row['contact'];
}
}我不知道如何做到这一点,但如果有人能给我一点提示,指点我的方向,我会非常感激的!)
发布于 2014-11-23 19:45:34
现在,我将在这里编写一个最小的片段:
首先,让我们为所有模型创建一个基类:
abstract class Model() {
public $fields = array();
private $data = array();
public function setValues(array $vals) {
foreach($vals as $key=>$value) {
if (in_array($key, static::$fields)) {
$this->data[$key] = $value;
}
}
}
public function get($key) {
if (in_array($key, static::$fields) && isset($this->data[$key])) {
return $this->data[$key];
}
return null; // or throw Exception)
}
}接下来,创建一些具体的模型:
class Users extends Model {
public static $fields = array('id', 'name');
}我们现在可以用它:
$users = array();
$sqlquery = "SELECT * FROM Users";
if ($result = $db->query($sqlquery)) {
while ($row = $result->fetch_assoc()) {
$user = new User();
$user->setValues($row);
$users[] = $user;
}
}您可以直接向用户模型中添加一些特定于用户的方法(也称为登录)。
此外,您还应该实现其他模型方法,如getById、getByQuery、save和其他方法,并且不使用直接的sql查询,因为模型本身可以做到这一点。
发布于 2014-11-23 18:23:35
使用上面列出的所有需要的成员变量(例如,auctions、title、feature_image等)创建一个类title。接下来,在类中创建一个可以接受setValues()的setter方法(例如$row )。
$sqlquery = "SELECT * FROM auctions";
$auction = new Auctions();
if ($result = $db->query($sqlquery)) {
while ($row = $result->fetch_assoc()) {
$auction->setValues( $row );
// do something with $auction...
}
}您也可以使用神奇的方法__set(),而不是显式的setter方法。
发布于 2014-11-23 18:23:17
可以将值存储在以下对象中
$obj = new stdClass; //create new standard class object
$obj->id = $row['id']; //assign property value
$obj->title = $row['title'];
//further properties..。诸若此类
https://stackoverflow.com/questions/27092520
复制相似问题