PHP Conference China 2020

Класс Yaf_Controller_Abstract

(Yaf >=1.0.0)

Введение

Yaf_Controller_Abstract это сердце системы Yaf. MVC расшифровывается как Model-View-Controller и представляет собой шаблон проектирования, предназначенный для отделения логики приложения от логики отображения

Каждый пользовательский контроллер должен наследовать Yaf_Controller_Abstract.

Вы обнаружите, что не можете определить функцию __construct для своего пользовательского контроллера, поэтому Yaf_Controller_Abstract предоставляет

Если вы определили метод init() в своем пользовательском контроллере, он будет вызываться до тех пор, пока будет создан экземпляр контроллера.

У действия при поступлении запроса могут быть аргументы. Если в параметрах запроса есть одна и та же переменная имени (Yaf_Request_Abstract::getParam()) после перенаправления, Yaf передаст их методу действия (Yaf_Action_Abstract::execute()).

Замечание:

Аргументы извлекаются напрямую без фильтрации, перед использованием их следует тщательно обработать.

Обзор классов

abstract Yaf_Controller_Abstract {
/* Свойства */
public actions ;
protected _module ;
protected _name ;
protected _request ;
protected _response ;
protected _invoke_args ;
protected _view ;
/* Методы */
final private __construct ( void )
protected display ( string $tpl [, array $parameters ] ) : bool
public forward ( string $action [, array $paramters ] ) : void
public getInvokeArg ( string $name ) : void
public getInvokeArgs ( void ) : void
public getModuleName ( void ) : string
public getName ( void ) : string
public getRequest ( void ) : Yaf_Request_Abstract
public getView ( void ) : Yaf_View_Interface
public getViewpath ( void ) : string
public init ( void ) : void
public initView ([ array $options ] ) : void
public redirect ( string $url ) : bool
protected render ( string $tpl [, array $parameters ] ) : string
public setViewpath ( string $view_directory ) : void
}

Свойства

actions

Вы также можете определить метод действия в отдельном скрипте PHP, используя это свойство и Yaf_Action_Abstract.

Пример #1 Определение действия в отдельном файле

<?php
class IndexController extends Yaf_Controller_Abstract {
    protected 
$actions = array(
        
/** теперь dummyAction определяется в отдельном файле */
        
"dummy" => "actions/Dummy_action.php",
    );

    
/* у метода действия могут быть аргументы */
    
public indexAction($name$id) {
       
/* $name и $id небезопасные необработанные данные */
       
assert($name == $this->getRequest()->getParam("name"));
       
assert($id   == $this->_request->getParam("id"));
    }
}
?>

Пример #2 Dummy_action.php

<?php
class DummyAction extends Yaf_Action_Abstract {
    
/* класс действия должен определить этот метод как точку входа */
    
public execute() {
    }
}
?>

_module

имя модуля

_name

имя контроллера

_request

текущий объект запроса

_response

текущий объект ответа

_invoke_args

_view

объект движка отображения

Содержание

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top