PHP, классы и объекты

#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, вы должны иметь возможность получить к нему доступ, изменив это.