Я новичок в PHP, и я пытаюсь настроить CMS (систему управления контентом) с помощью объектно-ориентированного программирования.Недопустимый аргумент для foreach() PHP OOP
При повторной факторизации кода, чтобы упростить его, я столкнулся с проблемой.
Когда я создаю экземпляр класса и вызываю функцию с помощью «auto экземпляра», мой массив больше не работает и возвращается пустым.
Если я использую длинную форму, она возвращается с массивом, но по мере того, как я разрабатываю настоящий сайт, это займет очень много времени, чтобы закодировать этот путь.
Вид утраты, любая помощь будет принята с благодарностью.
users.php:
<?php
class User
{
public $id;
public $username;
public $password;
public $first_name;
public $last_name;
public static function find_all_users()
{
self::find_this_query("SELECT * FROM users");
}
public static function find_user_by_id($user_id)
{
global $database;
$result_set = self::find_this_query("SELECT * FROM users WHERE id=$user_id LIMIT 1");
$found_user = mysqli_fetch_array($result_set);
return $found_user;
}
public static function find_this_query($sql)
{
global $database;
$result_set = $database->query($sql);
$the_object_array = array();
while ($row = mysqli_fetch_array($result_set)) {
$the_object_array[] = self::instantation($row);
}
return $the_object_array;
}
public static function instantation($the_record)
{
$the_object = new self;
//Long form instantation
// $the_object->id = $found_user['id'];
// $the_object->username = $found_user['username'];
// $the_object->password = $found_user['password'];
// $the_object->first_name = $found_user['first_name'];
// $the_object->last_name = $found_user['last_name'];
//Auto instantation
foreach ($the_record as $the_attribute => $value) {
if ($the_object->has_the_attribute($the_attribute)) {
$the_object->$the_attribute = $value;
}
}
return $the_object;
}
private function has_the_attribute($the_attribute)
{
$object_properties = get_object_vars($this);
return array_key_exists($the_attribute, $object_properties);
}
}
//Problem is in the function???
?>
admin_content.php:
<div class="container-fluid">
<!-- Page Heading -->
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
ADMIN
<small>Subheading</small>
</h1>
<?php
$users = User::find_all_users();
if(is_object($users)) {
foreach ($users as $user => $value) {
echo $user->username;
}
} else {
echo "not working";
}
?>
<ol class="breadcrumb">
<li>
<i class="fa fa-dashboard"></i> <a href="index.html">Dashboard</a>
</li>
<li class="active">
<i class="fa fa-file"></i> Blank Page
</li>
</ol>
</div>
</div>
<!-- /.row -->
Где ошибка происходит именно? Какова ценность '$ users'? –
Здесь есть пара петель 'foreach'? Что конкретно не удается, и каковы значения времени выполнения, когда это происходит? – David
Все комментарии приводят к созданию класса «auto». Смысл, я это были предыдущие тесты. –