#php #html #arrays #json #oop
#php #HTML #массивы #json #ооп
Вопрос:
Я пытаюсь перечислить все имена из базы данных json в html, используя класс. вывод html должен выглядеть примерно так:-
Персонажи
- имя: Джон
- имя: Сара
- имя: Майкл
Мне удалось зайти так далеко с моим кодом. Я знаю, что этот код не закончен или в нем есть ошибки, но я все еще новичок и учусь. Не могли бы вы, пожалуйста, помочь мне заставить этот код работать?
Файл базы данных Json
databas.json
{
"results": [
{
"name": "John",
"height": "182 cm",
"mass": "80 kg",
},
{
"name": "Sarah",
"height": "165 kg",
"mass": "60 cm",
},
{
"name": "Michael",
"height": "178 cm",
"mass": "75 kg",
},
]
}
Индексный файл
index.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Character</title>
</head>
<body style="margin-bottom:20em;">
<h1>Characters</h1>
<?php include('characters.php'); ?>
<?php
$data = file_get_contents("databs.json");
$data = json_decode($data, true);
echo '<pre>';
print_r($data);
echo '</pre>';
?>
</body>
</html>
Код класса
characters.php
<?php
class Character {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function getName($name){
return $this->name;
}
}
?>
Комментарии:
1. Этот код ничего не делает с JSON или базой данных. Не могли бы вы более конкретно рассказать о том, что вы пытаетесь сделать, и добавить любой другой соответствующий код?
2.
see where the problem is
: как, по-вашему, мы можем это сделать, не предоставляя никаких подробностей о предполагаемом назначении, MCVE и фактических результатах в сравнении с ожидаемыми результатами?3. Я прошу прощения за то, что не был ясен в моем вопросе. Я отредактировал свой вопрос и надеюсь, что вы, ребята, сможете помочь.
Ответ №1:
Если вы хотите получить доступ к переменной, используя только метод getter setter, тогда используйте закрытую область вместо общедоступной.
И ваш метод должен быть общедоступным.
<?php
class Character {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function getName($name){
return $this->name;
}
}
?>
Комментарии:
1. Спасибо, это было полезно, но я все еще могу заставить это работать. Я отредактировал свой вопрос и надеюсь, что вы сможете помочь или просто укажете, где находятся ошибки. Большое вам спасибо!
Ответ №2:
Ваши объекты всегда должны быть частными, а ваши функции — общедоступными (чтобы вы могли получить к ним доступ). Это причина, по которой вы создаете конструктор. Предполагая, что объектом является $name, вы должны иметь возможность получить к нему доступ, изменив это.