Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数据库行到对象属性_Php_Constructor - Fatal编程技术网

Php 数据库行到对象属性

Php 数据库行到对象属性,php,constructor,Php,Constructor,在MySQL中,我有一个包含ID和name列的表 对数据库的查询会将每个查询行作为一个数组提供给我: $row = array('ID' => '3', 'name' => 'John'); 我还有一个PHP类 class Person { var $ID = ''; var $name = ''; } 我如何为人写一个解释,这样我就可以去了 $current = new Person($row); echo $current->ID; // 3 echo

在MySQL中,我有一个包含
ID
name
列的表

对数据库的查询会将每个查询行作为一个数组提供给我:

$row = array('ID' => '3', 'name' => 'John');
我还有一个PHP类

class Person {
    var $ID = '';
    var $name = '';
}
我如何为
写一个解释,这样我就可以去了

$current = new Person($row);

echo $current->ID; // 3
echo $current->name; // John

与变量一样,您也可以具有变量属性:

class Person {
    var $ID = '';
    var $name = '';

    public function __construct($row) {
        foreach($row as $key => $value) {
            # `$this->$key =` sets the property of $this named whatever’s in $key.
            $this->$key = $value;
        }
    }
}
不过,您可能希望将其作为一个静态方法(
fromRow
?),以避免PHP中的重载混乱。您可能还希望筛选密钥;这要视情况而定


就像变量一样,您可以拥有变量属性:

class Person {
    var $ID = '';
    var $name = '';

    public function __construct($row) {
        foreach($row as $key => $value) {
            # `$this->$key =` sets the property of $this named whatever’s in $key.
            $this->$key = $value;
        }
    }
}
不过,您可能希望将其作为一个静态方法(
fromRow
?),以避免PHP中的重载混乱。您可能还希望筛选密钥;这要视情况而定


也许我应该提到,我不是在寻找像
$this.ID=$row['ID']
这样的东西,而是一种自动性,因为这只是一个高维问题的最小示例。顺便说一句,如果您正在寻找一个提供此功能的库,那么您描述的概念就是对象关系映射(ORM)(与将自己实现为一种学习体验相反)Doctrine和Propel是PHP的两种流行方法。也许我应该提到,我不希望看到像
$this.ID=$row['ID']
但这是一种自动性,因为这只是一个高维问题的最小示例。顺便说一句,如果您正在寻找一个提供这种(而不是将自己实现为学习体验)的库,那么您所描述的概念是对象关系映射(ORM),这两个原则和推进是PHP的两个流行原则。