Использование PHP переменных внутри этих документов внутри функций внутри класса


Если название еще не отпугнуло вас, читайте дальше. Я работаю на веб-сайте ExpressionEngine и редактирую файл шаблонов членов. Все шаблоны, связанные с взаимодействием членов, хранятся как функции внутри класса в одном файле.

Каждая из этих функций представляет собой простой документ, но многие из них печатают код с путями и терминами, которые я не хочу использовать. Например, этот веб-сайт будет ссылаться на вошедших пользователей как на "клиентов", а не "члены." В любом случае, я ищу способ абстрагировать эти значения, чтобы я мог легко изменить их для этого и будущих проектов. Прямо сейчас я могу печатать переменные внутри этих документов, определяя их Внутри каждой функции. Я бы предпочел определить эти значения в верхней части файла, прежде чем класс будет определен, но я не могу получить здесь документы, чтобы распознать эти значения.

Вот сокращенный пример файла:

<?php
/* I wish to define variables once in this area */
$globaluserterm = "client";

class profile_theme {

//----------------------------------------
//  Member Page Outer
//----------------------------------------
function member_page()
{
$userterm = "client";
return <<<EOF
<div id="{$userterm}-content">
    <h1>{$userterm} Account</h1> (Note: This DOES work)
    <h1>{$globaluserterm} Account</h1> (Note: This doesn't work)
    {include:member_manager}
</div>
EOF;
}
/* END */

//-------------------------------------
//  Full Proile with menu
//-------------------------------------
function full_profile()
{
$userterm = "client";
return <<< EOF
<div id="{$userterm}-full-profile">
    {include:content}
</div>
EOF;
}
/* END */


}
// END CLASS
?>
2 2

2 ответа:

Если у вас есть только один класс на файл, может быть, уже достаточно определить значения на уровне класса? Например,

class profile_theme {
    private $globaluserterm = "client";
    //....
}

И в функции:

return <<<EOF
<div id="{$userterm}-content">
    <h1>{$userterm} Account</h1> (Note: This DOES work)
    <h1>{$this->globaluserterm} Account</h1> (Note: This doesn't work)
    {include:member_manager}
</div>
EOF;

Я не совсем понимаю, что вы задумали, но я думаю, что вы ищете шаблонный движок, такой как Smarty. (Смотрите этот вопрос для более простых альтернатив.)

В Smarty вы подготовите файл шаблона:

<div id="{$userterm}-content">
    <h1>{$userterm} Account</h1> (Note: This DOES work)
    <h1>{$globaluserterm} Account</h1> (Note: This doesn't work)
    {include:member_manager} /* Don't know how to do this in smarty */
</div>

И предварительно заполнить значения переменных:

$Smarty = new Smarty();
// ... set up caching etc. if needed  ...

$Smarty->assign("userterm", $value1);
$Smarty->assign("globaluserterm", $value2);
..... 
Если это не то, что вы ищете, можете ли вы объяснить более подробно, что вы хотите сделать?