как скрыть ответ класса в 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);
Я так понял, что при таком обращении PrivilegedUser::getByUsername($_SESSION['username']); вы получаете не массив, не строку, а объект. И print_r($u); выводит всё его описание. Чтобы от этого избавится надо было обратиться к данным $u['Администратор']['contents:protected'].
Но в дальнейшем это усложнит разработку, также как непонятные имена методов (getByUsername гет чего по Username?). Попробуйте в методе getByUsername возвращать именно строку и переименовать его в getUserContent. Тогда Вам самому будет проще это использовать. Да и не только в нём. Лучше использовать специальные отдельные методы (гетеры) для получения необходимых данных. Например, getUserContent($idUser) или getUserRole($idUser)
