Это мой первый вопрос здесь, и я постараюсь как можно больше его разъяснить.Уточнить строку/s -> установить данные sql в переменные объекта
Я начинаю, и я прохожу через lynda - за уроками PHP MySQL, когда я попал в эту часть.
Код работает просто отлично, мне просто нужно пояснить себя для строки, которая прокомментирована в коде.
require_once('database.php');
class User {
public $id;
public $username;
public $password;
public $first_name;
public $last_name;
public static function find_all() {
return self::find_by_sql("SELECT * FROM users");
}
/////
public static function find_by_sql($sql="") {
global $database;
$result_set = $database->query($sql);
$user_array = array();
while ($row = $database->fetch_array($result_set)) {
$user_array[] = self::instantiate($row);
}
return $user_array;
}
И Finaly линии, которые я почти понимаю :)
private static function instantiate($row) {
$user = new self;
foreach($row as $attribute=>$value){
if($user->has_attribute($attribute)) {
$user->$attribute = $value; /// THIS LINE BUGS ME
}
}
return $user;
}
private function has_attribute($attribute) {
$user_vars = get_object_vars($this);
return array_key_exists($attribute, $user_vars);
}
}
Так что я думаю, что я не понимаю array_key_exists
, которая возвращает значение TRUE или FALSE, в моем случае это правда, но тогда линия $users->$attributes =$value ;
ДАЕТ НИКАКИХ смысл для меня,
Итак, я проверяю, если ключи от начнут извлекать имена переменных массива MATCH от объекта,
if($user->has_attribute($attribute)) { //and then this is true,perform nxt line
$user->$attribute = $value; // i got match of attribute above,how does it put values in $user_vars???
Я знаю, что он говорит что-то вроде «если у пользователя есть тот же атрибут, что и ключ из этого массива fetch, а затем помещается в это же значение атрибута этого атрибута $ value, но я просто не вижу, как это делается, когда я никогда не возвращал объектные переменные
Спасибо за ваше время!
редактировать: переменных имена классов равны имена COLUMN_NAMES из базы данных
Спасибо. Руслан! Думаю, я получил его сейчас! – GoFgO