The Yaf_Controller_Abstract class

- « Yaf_Config_Simple::valid

- Yaf_Controller_Abstract::__construct »

- PHP Manual
- Yaf
- The Yaf_Controller_Abstract class

# The Yaf_Controller_Abstract class

(Yaf >=1.0.0)

## Introduction

Yaf_Controller_Abstract is the heart of Yaf's system. MVC stands for Model-View-Controller and is a design pattern targeted at separating application logic from display logic.

Every custom controller shall inherit Yaf_Controller_Abstract.

You will find that you can not define __construct function for your custom controller, thus, Yaf_Controller_Abstract provides a magic method: Yaf_Controller_Abstract::init().

If you have defined a init() method in your custom controller, it will be called as long as the controller was instantiated.

Action may have arguments, when a request coming, if there are the same name variable in the request parameters(see Yaf_Request_Abstract::getParam()) after routed, Yaf will pass them to the action method (see Yaf_Action_Abstract::execute()).

> Note:

> These arguments are directly fetched without filtering, it should be carefully processed before use them.

## Class synopsis

abstract class Yaf_Controller_Abstract {
/* Properties */
public $actions;
protected $_module;
protected $_name;
protected $_request;
protected $_response;
protected $_invoke_args;
protected $_view;
/* Methods */
final private __construct()
protected display(string `$tpl`, array `$parameters` = ?): bool
public forward(string `$action`, array `$paramters` = ?): bool
public getInvokeArg(string `$name`): void
public getInvokeArgs(): void
public getModuleName(): string
public getName(): string
public getRequest(): Yaf_Request_Abstract
public getResponse(): Yaf_Response_Abstract
public getView(): Yaf_View_Interface
public getViewpath(): string
public init(): void
public initView(array `$options` = ?): void
public redirect(string `$url`): bool
protected render(string `$tpl`, array `$parameters` = ?): string
public setViewpath(string `$view_directory`): void
}

## Properties

actions

  You can also define an action method in a separate PHP script by using this property and Yaf_Action_Abstract.

  Example #1 define action in a separate file

      <?phpclass IndexController extends Yaf_Controller_Abstract {    protected $actions = array(        /** now dummyAction is defined in a separate file */        "dummy" => "actions/Dummy_action.php",    );    /* action method may have arguments */    public function indexAction($name, $id) {       /* $name and $id are unsafe raw data */       assert($name == $this->getRequest()->getParam("name"));       assert($id   == $this->_request->getParam("id"));    }}?>

  Example #2 Dummy_action.php

      <?phpclass DummyAction extends Yaf_Action_Abstract {    /* an action class shall define this method as the entry point */    public function execute() {    }}?>

_module

  module name

_name

  controller name

_request

  current request object

_response

  current response object

_invoke_args

_view

  view engine object

## Table of Contents

- Yaf_Controller_Abstract::__construct — Yaf_Controller_Abstract constructor
- Yaf_Controller_Abstract::display — The display purpose
- Yaf_Controller_Abstract::forward — Forward to another action
- Yaf_Controller_Abstract::getInvokeArg — The getInvokeArg purpose
- Yaf_Controller_Abstract::getInvokeArgs — The getInvokeArgs purpose
- Yaf_Controller_Abstract::getModuleName — Get module name
- Yaf_Controller_Abstract::getName — Get self name
- Yaf_Controller_Abstract::getRequest — Retrieve current request object
- Yaf_Controller_Abstract::getResponse — Retrieve current response object
- Yaf_Controller_Abstract::getView — Retrieve the view engine
- Yaf_Controller_Abstract::getViewpath — The getViewpath purpose
- Yaf_Controller_Abstract::init — Controller initializer
- Yaf_Controller_Abstract::initView — The initView purpose
- Yaf_Controller_Abstract::redirect — Redirect to a URL
- Yaf_Controller_Abstract::render — Render view template
- Yaf_Controller_Abstract::setViewpath — The setViewpath purpose