Я ищу вызов функции в другом файле с использованием переменной для имени класса. Когда пользователь входит в систему, я получаю их уровень доступа и хочу использовать полученную переменную для вызова разных меню, страниц и т. Д., К которым их доступ позволяет им получить доступ. Так, например, они могут иметь следующие права доступа:PHP - класс вызова с использованием переменной с использованием ключевого слова
- Администратор
- Сотрудник
- Общественный
$access
установлен в одной из этих переменных (строковое значение).
1. В моем pages.php
сценарий, у меня есть следующие (упрощенно):
namespace Project\PageContent;
use Project\PageContent as pageContent;
class Administrator
{
public function pageAccess()
{
return "Administrator access";
}
}
class Employee
{
public function pageAccess()
{
return "Employee access";
}
}
class Public
{
public function pageAccess()
{
return "Public access";
}
}
2. Теперь, как я могу получить доступ к нему (с другой страницы - упрощенный):
namespace Project\Main;
use Project\Main as main;
require_once('pages.php');
use Project\PageContent as pageContent;
$response = pageContent\Administrator::pageAccess();
echo $response
3. И к тому, как я хотел бы получить к нему доступ (упрощенно) - где это явно не работает или я не буду задавать вопрос:
namespace Project\Main;
use Project\Main as main;
$access = 'Administrator';
require_once('pages.php');
use Project\PageContent as pageContent;
$response = pageContent\.$access::pageAccess();
echo $response;
Где $ доступ представляет собой строку, которая может быть использована, чтобы указать на соответствующую классу (в случае выше - Administrator
)
Выход 3 должен соответствовать выходу 2 и вернуть Administrator access
Любой помощь с это очень ценится, спасибо!
'$ response = pageContent \ {$ access} :: pageAccess();'? –
@u_mulder Я получаю 'синтаксическую ошибку, неожиданную '{', ожидая T_STRING' – ctwheels
Если вы используете E_STRICT, вы получите предупреждение во второй версии, потому что вы обращаетесь к публичной функции, поскольку она статична. – Mihai