CPradoViewRenderer
| Пакет | system.web.renderers |
|---|---|
| Наследование | класс CPradoViewRenderer » CViewRenderer » CApplicationComponent » CComponent |
| Реализует | IViewRenderer, IApplicationComponent |
| С версии | 1.0 |
| Исходный код | framework/web/renderers/CPradoViewRenderer.php |
CPradoViewRenderer реализует рендерер представления, который позволяет пользователям использовать синтаксис шаблонов, похожий на шаблоны PRADO.
Для использования CPradoViewRenderer, настройте его как компонент приложения с именем "viewRenderer" в конфигурации приложения:
CPradoViewRenderer позволяет писать файлы представления с использованием следующего синтаксиса:
Для использования CPradoViewRenderer, настройте его как компонент приложения с именем "viewRenderer" в конфигурации приложения:
array(
'components'=>array(
......
'viewRenderer'=>array(
'class'=>'CPradoViewRenderer',
),
),
)
CPradoViewRenderer позволяет писать файлы представления с использованием следующего синтаксиса:
// PHP tags:
<%= expression %>
// <?php echo expression ?>
<% statement %>
// <?php statement ?></li>
// component tags:
<com:WigetClass name1="value1" name2='value2' name3={value3} >
// <?php $this->beginWidget('WigetClass',
// array('name1'=>"value1", 'name2'=>'value2', 'name3'=>value3)); ?>
</com:WigetClass >
// <?php $this->endWidget('WigetClass'); ?>
<com:WigetClass name1="value1" name2='value2' name3={value3} />
// <?php $this->widget('WigetClass',
// array('name1'=>"value1", 'name2'=>'value2', 'name3'=>value3)); ?>
// cache tags:
<cache:fragmentID name1="value1" name2='value2' name3={value3} >
// <?php if($this->beginCache('fragmentID',
// array('name1'=>"value1", 'name2'=>'value2', 'name3'=>value3))): ?>
</cache:fragmentID >
// <?php $this->endCache('fragmentID'); endif; ?>
// clip tags:
<clip:clipID >
// <?php $this->beginClip('clipID'); ?>
</clip:clipID >
// <?php $this->endClip('clipID'); ?>
// comment tags:
<!--- comments --->
// the whole tag will be stripped off
Свойства публичные
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| behaviors | массив | поведения, которые должны быть присоединены к этому компоненту. | CApplicationComponent |
| fileExtension | строка | расширение имени файла представления. | CViewRenderer |
| filePermission | целое число | разрешения chmod для временных каталогов и файлов, созданных во время разбора. | CViewRenderer |
| isInitialized | булево | Проверяет, был ли инициализирован этот компонент приложения. | CApplicationComponent |
| useRuntimePath | булево | хранить ли результаты разбора в каталоге runtime приложения. | CViewRenderer |
Методы публичные
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод с указанным именем, который не является методом класса. | CComponent |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства нулевым. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в значение null. | CComponent |
| asa() | Возвращает объект поведения с указанным именем. | CComponent |
| attachBehavior() | Присоединяет поведение к компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик события к событию. | CComponent |
| canGetProperty() | Определяет, можно ли считать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик события. | CComponent |
| disableBehavior() | Отключает присоединенное поведение. | CComponent |
| disableBehaviors() | Отключает все присоединенные поведения к этому компоненту. | CComponent |
| enableBehavior() | Включает присоединенное поведение. | CComponent |
| enableBehaviors() | Включает все присоединенные поведения к этому компоненту. | CComponent |
| evaluateExpression() | Вычисляет выражение PHP или обратный вызов в контексте этого компонента. | CComponent |
| getEventHandlers() | Возвращает список присоединенных обработчиков событий для события. | CComponent |
| getIsInitialized() | Проверяет, был ли инициализирован этот компонент приложения. | CApplicationComponent |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли у события присоединенные обработчики. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| init() | Инициализирует компонент приложения. | CApplicationComponent |
| raiseEvent() | Возбуждает событие. | CComponent |
| renderFile() | Рендерит файл представления. | CViewRenderer |
Методы защищенные
| Метод | Описание | Определено в |
|---|---|---|
| generateViewFile() | Парсит исходный файл представления и сохраняет результаты в другом файле. | CPradoViewRenderer |
| getViewFile() | Генерирует путь к результативному файлу представления. | CViewRenderer |
Подробное описание методов
generateViewFile() метод
protected void generateViewFile(string $sourceFile, string $viewFile) | ||
| $sourceFile | строка | путь к исходному файлу представления |
| $viewFile | строка | путь к результативному файлу представления |
Исходный код: framework/web/renderers/CPradoViewRenderer.php#80 (показать)
protected function generateViewFile($sourceFile,$viewFile)
{
static $regexRules=array(
'<%=?\s*(.*?)\s*%>', // PHP statements or expressions
'<\/?(com|cache|clip):([\w\.]+)\s*((?:\s*\w+\s*=\s*\'.*?(?<!\\\\)\'|\s*\w+\s*=\s*".*?(?<!\\\\)"|\s*\w+\s*=\s*\{.*?\})*)\s*\/?>', // component tags
'<!---.*?--->', // template comments
);
$this->_sourceFile=$sourceFile;
$this->_input=file_get_contents($sourceFile);
$n=preg_match_all('/'.implode('|',$regexRules).'/msS',$this->_input,$matches,PREG_SET_ORDER|PREG_OFFSET_CAPTURE);
$textStart=0;
$this->_output="<?php /* source file: $sourceFile */ ?>\n";
for($i=0;$i<$n;++$i)
{
$match=&$matches[$i];
$str=$match[0][0];
$matchStart=$match[0][1];
$matchEnd=$matchStart+strlen($str)-1;
if($matchStart>$textStart)
$this->_output.=substr($this->_input,$textStart,$matchStart-$textStart);
$textStart=$matchEnd+1;
if(strpos($str,'<com:')===0) // opening component tag
{
$type=$match[3][0];
if($str[strlen($str)-2]!=='/') // open tag
$this->_output.=$this->processBeginWidget($type,$match[4][0],$match[2][1]);
else
$this->_output.=$this->processWidget($type,$match[4][0],$match[2][1]);
}
elseif(strpos($str,'</com:')===0) // closing component tag
$this->_output.=$this->processEndWidget($match[3][0],$match[2][1]);
elseif(strpos($str,'<cache:')===0) // opening cache tag
{
$id=$match[3][0];
if($str[strlen($str)-2]!=='/') // open tag
$this->_output.=$this->processBeginCache($id,$match[4][0],$match[2][1]);
else
$this->_output.=$this->processCache($id,$match[4][0],$match[2][1]);
}
elseif(strpos($str,'</cache:')===0) // closing cache tag
$this->_output.=$this->processEndCache($match[3][0],$match[2][1]);
elseif(strpos($str,'<clip:')===0) // opening clip tag
{
$id=$match[3][0];
if($str[strlen($str)-2]!=='/') // open tag
$this->_output.=$this->processBeginClip($id,$match[4][0],$match[2][1]);
else
$this->_output.=$this->processClip($id,$match[4][0],$match[2][1]);
}
elseif(strpos($str,'</clip:')===0) // closing clip tag
$this->_output.=$this->processEndClip($match[3][0],$match[2][1]);
elseif(strpos($str,'<%=')===0) // expression
$this->_output.=$this->processExpression($match[1][0],$match[1][1]);
elseif(strpos($str,'<%')===0) // statement
$this->_output.=$this->processStatement($match[1][0],$match[1][1]);
}
if($textStart<strlen($this->_input))
$this->_output.=substr($this->_input,$textStart);
file_put_contents($viewFile,$this->_output);
}
Парсит исходный файл представления и сохраняет результаты в другом файле. Этот метод необходим для родительского класса.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CPradoViewRenderer