Даже с ошибками var_dump
все еще работает. Кажется, все работает, но я получаю эти две ошибки, которые повторяются 4 раза.Ошибка PHP: Отсутствует аргумент 1, хотя я передаю переменную
Ошибки:
Warning: Missing argument 1 for Product::__construct() in Product.php on line 13
Notice: Undefined variable: attributes in Product.php on line 14
index.php:
$products = $query->selectAll('products');
foreach ($products as $product) : ?>
<li><?= $product->title; ?></li>
<?php endforeach;
$arr = [
'type' => 'Furniture',
];
$furniture = new Product($arr);
var_dump($furniture->type);
product.php:
class Product
{
public $type;
public function __construct($attributes) { // line 13
$this->type = $attributes['type']; // line 14
}
}
EDIT:
У меня было return $query->fetchAll(PDO::FETCH_CLASS, "Product");
от предыдущего тестирования и просто пришлось удалить из него «Продукт».
ошибки исчезли, когда я удаляю закомментировать эту часть index.php:
$products = $query->selectAll('products');
foreach ($products as $product) : ?>
<li><?= $product->title; ?></li>
<?php endforeach;
SelectAll() метод:
public function selectAll($table)
{
$query = $this->pdo->prepare("SELECT * FROM `$table`");
$query->execute();
return $query->fetchAll(PDO::FETCH_CLASS, "Product");
}
Вы не определили, если атрибуты $ имеет тип массива или нет, пожалуйста, определить и вы не получите эти предупреждения – Rahul
я не могу воспроизвести ошибки. Вы уверены, что не используете экземпляр продукта где-то раньше без переменной? @Rahul type-hinting не решит этого. –
Код, который вы показали как работает как ожидалось, без каких-либо предупреждений или уведомлений. –