4.1.如何创建一个组件

如何创建一个组件?

  1. 组件需要继承qing\com\Component或实现接口qing\com\ComponentInterface
  2. 组件的可配置属性需要是public访问权限
  3. protected属性,需要通过public的set方法配置

组件配置

//组件列表
'components'=>
[
    //demo01组件
    'demo01'=>
    [
        'class'=>'\qing\com\Demo01',
        'name'=>'xianwang',
        'nickname'=>'小旺'
    ],
    //demo0101组件
    'demo0101'=>
    [
        'class'=>'\qing\com\Demo01',
        'name'=>'qingmvc',
        'nickname'=>'qingcms'
    ],
]

组件案例

Demo01.php

<?php 
namespace qing\com;
use qing\com\Component;
/**
 * 组件案例
 * 
 * @author xiaowang <736523132@qq.com>
 * @copyright Copyright (c) 2013 http://qingmvc.com
 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache-2.0
 */
class Demo01 extends Component{
    /**
     * public属性可直接配置
     * 
     * @var string
     */
    public $name;
    /**
     * protected属性,需要通过public的set方法配置
     * 
     * @var string
     */
    protected $nickname;
    /**
     * @see \qing\com\ComponentInterface::initComponent()
     */
    public function initComponent(){
        //创建组件会执行一次该函数
        //用于初始化组件
    }
    /**
     * @param string $nickname
     */
    public function setNickname($nickname){

    }
}   
?>

Demo01Creator.php

<?php
namespace qing\com;
use qing\com\ComCreator;
/**
 */
class Demo01Creator extends ComCreator{
    /**
     * @see \qing\com\ComCreator::create()
     */
    public function create(){
        $com=new Demo01();
        $com->name='demo01';
        return $com;
    }
}
?>