[英]what is the purpose of a component (class) in Yii
我不了解Yii FW中使用的零部件 。
有一个具体的(现实生活中)的例子为什么我应该使用它?
框架由组件组成。 Yii组件的基类是CComponent,它基本上是Yii中所有内容的基类。 可以通过代码或在配置中初始化时“即时”加载组件。 您可以在Yii Guide上了解更多信息
现实生活中的例子。 如果要盖房子,则需要某种类型的材料,因此这些砖块或原木将成为您的组件。 您可以制作不同类型的房屋,但基本上,它们可以支撑您的房屋并提供所需的功能。
这里有一个Yii Component的例子:
class Y extends CComponent
{
/**
* Returns the images path on webserver
* @return string
*/
public static function getImagesPath()
{
return Yii::app()->getBasePath().DIRECTORY_SEPARATOR.'images';
}
}
现在,我可以使用此类检查应用程序使用的资源: $y = new Y; $y->stats();
$y = new Y; $y->stats();
另外,如果我创建一个特殊的CBehavior子类:
class YBehavior extends CBehavior {
/**
* Shows the statistics of resources used by application
* @param boolean $return defines if the result should be returned or send to output
* @return string
*/
public function stats($return = false)
{
$stats = '';
$db_stats = Yii::app()->db->getStats();
if (is_array($db_stats)) {
$stats = 'Requests completed: '.$db_stats[0].' (in '.round($db_stats[1], 5).' sec.)<br />';
}
$memory = round(Yii::getLogger()->memoryUsage/1024/1024, 3);
$time = round(Yii::getLogger()->executionTime, 3);
$stats .= 'Memory used: '.$memory.' Mb<br />';
$stats .= 'Time elapsed: '.$time.' сек.';
if ($return) {
return $stats;
}
echo $stats;
}
}
然后将此行为应用于我的组件: $y->attachBehavior('ybehavior', new YBehavior);
现在我可以在我的Y类中使用stats方法: $y->stats()
这是可能的,因为Yii中CComponent的每个子类都使您可以使用行为,事件,getter和setter等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.