How to write a simple application component

Application component

An application component is a confortable way for share information among all component of the application

In Yii there are many application components, for example Yii::app()->db.

Creating the class

Let's imagine we need almost everywhere an instance of the class Region, and we want to avoid to do too much queries.

We can create a class which extends CApplicationComponent, like that:


class RegionSingleton extends CApplicationComponent
	private $_model=null;
	public function setModel($id)
	public function getModel()
		if (!$this->_model)
			if (isset($_GET['region']))
				$this->_model=Region::model()->findByAttributes(array('url_name'=> $_GET['region']));
		return $this->_model;
	public function getId()
		return $this->model->id;
	public function getName()
		return $this->model->name;

And include this class in config main:



Now, wherever in the application we can call


for have the model, or also


for retrive the id.

We can also set the model by using


This approach can be very useful and resource-saving, because we do at most only a single query.

14 7
Viewed: 60 417 times
Version: 1.1
Category: How-tos
Written by: zaccaria
Last updated by: zaccaria
Created on: May 6, 2011
Last updated: 6 years ago
Update Article


View all history

Related Articles