как скрыть ответ класса в php

Я обращаюсь к классу в php

if (isset($_SESSION['username'])) {
    $u = PrivilegedUser::getByUsername($_SESSION['username']);
    print_r($u);
}

После того как класс отработал, он возвращает объект, заполненный информацией о соответствующем пользователе и его правах доступа. В качестве прав доступа у меня в базе в одной из таблиц хранится html код страницы. При обращении к классу и выводе содержимого на страницу он мне показывает лабуду с моим html кодом из базы данных

введите сюда описание изображения

Как избавиться от этих надписей?

UPD:

public static function getByUsername($username) {
        $obj = new DB();
        $DB = $obj->connectdb();
        $query = "select * from users where username = :username";
        $sth = $DB->prepare($query);
        $sth->execute(
            array(
                ":username" => $username
            )
        );
        
        $result = $sth->fetch();
        
        if (!empty($result)) {
            $privUser = new PrivilegedUser();
            $privUser->user_id = $result["id"];
            $privUser->username = $username;
            $privUser->initRoles();
            return $privUser;
        } else {
            return false;
        }
    }

getByUsername это метод класса PrivilegedUser он возвращает объект, заполненный информацией о соответствующем пользователе. метод initRoles для хранит id и имя роли. например 1 Администратор и т.д)

protected function initRoles() {
        $this->roles = array();
        $obj = new DB();
        $DB = $obj->connectdb();
        $query = "select t1.role_id, t2.name from user_role as t1 join role as t2 on t1.role_id = t2.id_role where t1.user_id = :user_id";
        $sth = $DB->prepare($query);
        $sth->execute(
            array(
                ":user_id" => $this->user_id
            )
        );

        while($result = $sth->fetch(PDO::FETCH_ASSOC)) {
            $this->roles[$result["name"]] = Role::getRoleContent($result["role_id"]);
        }
    }

getRoleContent метод класса Role возвращает контент из базы данных в соответствии с ролью пользователя

public static function getRoleContent($role_id) {
        $role = new Role();
        $obj = new DB();
        $DB = $obj->connectdb();
        $query = "select t2.content from role_content as t1 join content as t2 on t1.content_id = t2.id where t1.role_id = :role_id";
        $sth = $DB->prepare($query);
        $sth->execute(
            array(
                ":role_id" => $role_id
            )
        );

        while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
            $role->contents[$row["content"]] = true;
        }
        return $role;
        
        // $content = [];
        // while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        //     $content[] = $row["content"];
        // }
        // return $content;
    }

А вызываю я его вот так, $_SESSION['username'] это username пользователя, например demo

if (isset($_SESSION['username'])) {
   $u = PrivilegedUser::getByUsername($_SESSION['username']);
   print_r($u);
}

Ответы (2 шт):

Автор решения: Алексей Шиманский

он мне показывает лабуду. Как избавиться?

Не писать в коде эту самую лабуду в виде

print_r($u);
→ Ссылка
Автор решения: Pashok

Я так понял, что при таком обращении PrivilegedUser::getByUsername($_SESSION['username']); вы получаете не массив, не строку, а объект. И print_r($u); выводит всё его описание. Чтобы от этого избавится надо было обратиться к данным $u['Администратор']['contents:protected'].

Но в дальнейшем это усложнит разработку, также как непонятные имена методов (getByUsername гет чего по Username?). Попробуйте в методе getByUsername возвращать именно строку и переименовать его в getUserContent. Тогда Вам самому будет проще это использовать. Да и не только в нём. Лучше использовать специальные отдельные методы (гетеры) для получения необходимых данных. Например, getUserContent($idUser) или getUserRole($idUser)

→ Ссылка