Spec-Zone.ru › Yii 1.1

CPradoViewRenderer

Пакет system.web.renderers
Наследование класс CPradoViewRenderer » CViewRenderer » CApplicationComponent » CComponent
Реализует IViewRenderer, IApplicationComponent
С версии 1.0
Исходный код framework/web/renderers/CPradoViewRenderer.php
CPradoViewRenderer реализует рендерер представления, который позволяет пользователям использовать синтаксис шаблонов, похожий на шаблоны PRADO.

Для использования 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API