Spec-Zone.ru › Yii 1.1

CModule

Пакет system.base
Наследование абстрактный класс CModule » CComponent
Подклассы CApplication, CWebModule
Исходный код framework/base/CModule.php
CModule — базовый класс для модулей и приложений.

CModule главным образом управляет компонентами приложения и подмодулями.

Свойства public

Свойство Тип Описание Определено в
basePath строка Возвращает корневой каталог модуля. CModule
behaviors массив поведения, которые должны быть присоединены к модулю. CModule
components массив Возвращает компоненты приложения. CModule
id строка Возвращает идентификатор модуля. CModule
modulePath строка Возвращает каталог, содержащий модули приложения. CModule
modules массив Возвращает конфигурацию установленных модулей. CModule
params CAttributeCollection Возвращает пользовательские параметры. CModule
parentModule CModule Возвращает родительский модуль. CModule
preload массив идентификаторы компонентов приложения, которые должны быть предварительно загружены. CModule

Методы public

Метод Описание Определено в
__call() Вызывает метод с указанным именем, который не является методом класса. CComponent
__construct() Конструктор. CModule
__get() Магический метод-получатель. CModule
__isset() Проверяет, является ли значение свойства нулевым. CModule
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в null. CComponent
asa() Возвращает объект поведения с указанным именем. CComponent
attachBehavior() Присоединяет поведение к этому компоненту. CComponent
attachBehaviors() Присоединяет список поведений к компоненту. CComponent
attachEventHandler() Присоединяет обработчик событий к событию. CComponent
canGetProperty() Определяет, можно ли прочитать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
configure() Настраивает модуль с указанной конфигурацией. CModule
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик событий. CComponent
disableBehavior() Отключает присоединенное поведение. CComponent
disableBehaviors() Отключает все присоединенные поведения к этому компоненту. CComponent
enableBehavior() Включает присоединенное поведение. CComponent
enableBehaviors() Включает все присоединенные к этому компоненту поведения. CComponent
evaluateExpression() Вычисляет выражение PHP или обратный вызов в контексте этого компонента. CComponent
getBasePath() Возвращает корневой каталог модуля. CModule
getComponent() Извлекает указанный компонент приложения. CModule
getComponents() Возвращает компоненты приложения. CModule
getEventHandlers() Возвращает список присоединенных обработчиков событий для события. CComponent
getId() Возвращает идентификатор модуля. CModule
getModule() Извлекает указанный модуль приложения. CModule
getModulePath() Возвращает каталог, содержащий модули приложения. CModule
getModules() Возвращает конфигурацию установленных модулей. CModule
getParams() Возвращает пользовательские параметры. CModule
getParentModule() Возвращает родительский модуль. CModule
hasComponent() Проверяет, существует ли компонент с указанным именем. CModule
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли присоединенные обработчики к событию с указанным именем. CComponent
hasModule() Возвращает значение, указывающее, установлен ли указанный модуль. CModule
hasProperty() Определяет, определено ли свойство. CComponent
raiseEvent() Вызывает событие. CComponent
setAliases() Определяет корневые псевдонимы. CModule
setBasePath() Устанавливает корневой каталог модуля. CModule
setComponent() Добавляет компонент под управление модуля. CModule
setComponents() Устанавливает компоненты приложения. CModule
setId() Устанавливает идентификатор модуля. CModule
setImport() Устанавливает псевдонимы, используемые в модуле. CModule
setModulePath() Устанавливает каталог, содержащий модули приложения. CModule
setModules() Настраивает подмодули этого модуля. CModule
setParams() Устанавливает пользовательские параметры. CModule

Защищённые методы

Метод Описание Определено в
init() Инициализирует модуль. CModule
preinit() Предварительно инициализирует модуль. CModule
preloadComponents() Загружает статические компоненты приложения. CModule

Подробное описание свойств

basePath свойство

public string getBasePath()
public void setBasePath(string $path)

Возвращает корневой каталог модуля.

behaviors свойство

public array $behaviors;

Поведения, которые должны быть присоединены к модулю. Поведения будут присоединены к модулю при вызове init. Обратитесь к CModel::behaviors для получения информации о том, как указать значение этого свойства.

components свойство

public array getComponents(boolean $loadedOnly=true)
public void setComponents(array $components, boolean $merge=true)

Возвращает компоненты приложения.

id свойство

public string getId()
public void setId(string $id)

Возвращает идентификатор модуля.

modulePath свойство

public string getModulePath()
public void setModulePath(string $value)

Возвращает каталог, содержащий модули приложения.

modules свойство

public array getModules()
public void setModules(array $modules, boolean $merge=true)

Возвращает конфигурацию установленных модулей.

params свойство

public CAttributeCollection getParams()
public void setParams(array $value)

Возвращает пользовательские параметры.

parentModule свойство только для чтения

public CModule getParentModule()

Возвращает родительский модуль.

preload свойство

public array $preload;

Идентификаторы компонентов приложения, которые должны быть предварительно загружены.

Подробное описание методов

__construct() метод

public void __construct(string $id, CModule $parent, mixed $config=NULL)
$id string идентификатор этого модуля
$parent CModule родительский модуль (если есть)
$config смешанное настройка модуля. Она может быть массивом или путем к PHP-файлу, возвращающему массив настроек.
Исходный код: framework/base/CModule.php#69 (показать)
public function __construct($id,$parent,$config=null)
{
    
$this->_id=$id;
    
$this->_parentModule=$parent;

    
// set basePath as early as possible to avoid trouble
    
if(is_string($config))
        
$config=require($config);
    if(isset(
$config['basePath']))
    {
        
$this->setBasePath($config['basePath']);
        unset(
$config['basePath']);
    }
    
Yii::setPathOfAlias($id,$this->getBasePath());

    
$this->preinit();

    
$this->configure($config);
    
$this->attachBehaviors($this->behaviors);
    
$this->preloadComponents();

    
$this->init();
}

Конструктор.

__get() метод

public mixed __get(string $name)
$name строка имя компонента приложения или свойства
{возврат} смешанное значение свойства с указанным именем
Исходный код: framework/base/CModule.php#100 (показать)
public function __get($name)
{
    if(
$this->hasComponent($name))
        return 
$this->getComponent($name);
    else
        return 
parent::__get($name);
}

Магический метод получения. Этот метод переопределён для поддержки доступа к компонентам приложения, например, для чтения свойств модуля.

__isset() метод

public boolean __isset(string $name)
$name строка имя свойства или имя события
{возврат} булево является ли значение свойства нулевым
Исходный код: framework/base/CModule.php#115 (показать)
public function __isset($name)
{
    if(
$this->hasComponent($name))
        return 
$this->getComponent($name)!==null;
    else
        return 
parent::__isset($name);
}

Проверяет, является ли значение свойства нулевым. Этот метод переопределяет родительскую реализацию, проверяя, загружен ли указанный компонент приложения.

configure() метод

public void configure(array $config)
$config массив массив конфигурации
Исходный код: framework/base/CModule.php#515 (показать)
public function configure($config)
{
    if(
is_array($config))
    {
        foreach(
$config as $key=>$value)
            
$this->$key=$value;
    }
}

Настраивает модуль с указанной конфигурацией.

getBasePath() метод

public string getBasePath()
{возврат} строка корневой каталог модуля. По умолчанию — каталог, содержащий класс модуля.
Исходный код: framework/base/CModule.php#145 (показать)
public function getBasePath()
{
    if(
$this->_basePath===null)
    {
        
$class=new ReflectionClass(get_class($this));
        
$this->_basePath=dirname($class->getFileName());
    }
    return 
$this->_basePath;
}

Возвращает корневой каталог модуля.

getComponent() метод

public IApplicationComponent getComponent(string $id, boolean $createIfNull=true)
$id строка идентификатор компонента приложения (регистрозависимый)
$createIfNull булево создавать компонент, если он ещё не существует.
{возврат} IApplicationComponent экземпляр компонента приложения, null, если компонент отключён или не существует.
Исходный код: framework/base/CModule.php#382 (показать)
public function getComponent($id,$createIfNull=true)
{
    if(isset(
$this->_components[$id]))
        return 
$this->_components[$id];
    elseif(isset(
$this->_componentConfig[$id]) && $createIfNull)
    {
        
$config=$this->_componentConfig[$id];
        if(!isset(
$config['enabled']) || $config['enabled'])
        {
            
Yii::trace("Loading \"$id\" application component",'system.CModule');
            unset(
$config['enabled']);
            
$component=Yii::createComponent($config);
            
$component->init();
            return 
$this->_components[$id]=$component;
        }
    }
}

Получает указанный компонент приложения.

См. также

  • hasComponent

getComponents() метод

public array getComponents(boolean $loadedOnly=true)
$loadedOnly булево возвращать только загруженные компоненты. Если это значение ложно, то будут возвращены все компоненты, указанные в конфигурации, загруженные или нет. Загруженные компоненты будут возвращены как объекты, а не загруженные — как массивы конфигурации. Этот параметр доступен с версии 1.1.3.
{возврат} массив компоненты приложения (индексированные по их идентификаторам)
Исходный код: framework/base/CModule.php#466 (показать)
public function getComponents($loadedOnly=true)
{
    if(
$loadedOnly)
        return 
$this->_components;
    else
        return 
array_merge($this->_componentConfig, $this->_components);
}

Возвращает компоненты приложения.

getId() метод

public string getId()
{возврат} строка идентификатор модуля.
Исходный код: framework/base/CModule.php#127 (показать)
public function getId()
{
    return 
$this->_id;
}

Возвращает идентификатор модуля.

getModule() метод

public CModule getModule(string $id)
$id строка идентификатор модуля приложения (регистрозависимый)
{возврат} CModule экземпляр модуля, null, если модуль отключён или не существует.
Исходный код: framework/base/CModule.php#269 (показать)
public function getModule($id)
{
    if(isset(
$this->_modules[$id]) || array_key_exists($id,$this->_modules))
        return 
$this->_modules[$id];
    elseif(isset(
$this->_moduleConfig[$id]))
    {
        
$config=$this->_moduleConfig[$id];
        if(!isset(
$config['enabled']) || $config['enabled'])
        {
            
Yii::trace("Loading \"$id\" module",'system.base.CModule');
            
$class=$config['class'];
            unset(
$config['class'], $config['enabled']);
            if(
$this===Yii::app())
                
$module=Yii::createComponent($class,$id,null,$config);
            else
                
$module=Yii::createComponent($class,$this->getId().'/'.$id,$this,$config);
            return 
$this->_modules[$id]=$module;
        }
    }
}

Возвращает указанный модуль приложения. Модуль должен быть объявлен в modules. Новый экземпляр будет создан при первом вызове этого метода с данным идентификатором.

getModulePath() метод

public string getModulePath()
{возврат} строка каталог, содержащий модули приложения. По умолчанию — подкаталог «modules» каталога basePath.
Исходный код: framework/base/CModule.php#199 (показать)
public function getModulePath()
{
    if(
$this->_modulePath!==null)
        return 
$this->_modulePath;
    else
        return 
$this->_modulePath=$this->getBasePath().DIRECTORY_SEPARATOR.'modules';
}

Возвращает каталог, содержащий модули приложения.

getModules() метод

public array getModules()
{return} array настройка текущих установленных модулей (ID модуля => настройка)
Исходный код: framework/base/CModule.php#305 (показать)
public function getModules()
{
    return 
$this->_moduleConfig;
}

Возвращает настройки текущих установленных модулей.

getParams() метод

public CAttributeCollection getParams()
{return} CAttributeCollection список параметров, определённых пользователем
Исходный код: framework/base/CModule.php#172 (показать)
public function getParams()
{
    if(
$this->_params!==null)
        return 
$this->_params;
    else
    {
        
$this->_params=new CAttributeCollection;
        
$this->_params->caseSensitive=true;
        return 
$this->_params;
    }
}

Возвращает параметры, определённые пользователем.

getParentModule() метод

public CModule getParentModule()
{return} CModule родительский модуль. Null, если у данного модуля нет родителя.
Исходный код: framework/base/CModule.php#257 (показать)
public function getParentModule()
{
    return 
$this->_parentModule;
}

Возвращает родительский модуль.

hasComponent() метод

public boolean hasComponent(string $id)
$id string ID компонента приложения
{return} boolean существует ли компонент приложения с указанным именем (включая загруженные и отключённые).
Исходный код: framework/base/CModule.php#370 (показать)
public function hasComponent($id)
{
    return isset(
$this->_components[$id]) || isset($this->_componentConfig[$id]);
}

Проверяет наличие компонента с указанным именем.

hasModule() метод (доступен начиная с v1.1.2)

public boolean hasModule(string $id)
$id string ID модуля
{return} boolean установлен ли указанный модуль.
Исходный код: framework/base/CModule.php#296 (показать)
public function hasModule($id)
{
    return isset(
$this->_moduleConfig[$id]) || isset($this->_modules[$id]);
}

Возвращает значение, указывающее, установлен ли указанный модуль.

init() метод

protected void init()
Исходный код: framework/base/CModule.php#551 (показать)
protected function init()
{
}

Инициализирует модуль. Этот метод вызывается в конце конструктора модуля. Обратите внимание, что в этот момент модуль был настроен, к нему были присоединены поведения, и компоненты приложения были зарегистрированы.

См. также

  • preinit

preinit() метод

protected void preinit()
Исходный код: framework/base/CModule.php#540 (показать)
protected function preinit()
{
}

Предварительная инициализация модуля. Этот метод вызывается в начале конструктора модуля. Вы можете переопределить этот метод, чтобы выполнить некоторые индивидуальные работы предварительной инициализации. Обратите внимание, что в этот момент модуль ещё не настроен.

См. также

  • init

preloadComponents() метод

protected void preloadComponents()
Исходный код: framework/base/CModule.php#527 (показать)
protected function preloadComponents()
{
    foreach(
$this->preload as $id)
        
$this->getComponent($id);
}

Загружает статические компоненты приложения.

setAliases() метод

public void setAliases(array $mappings)
$mappings array список псевдонимов для определения. Ключи массива — корневые псевдонимы, значения — пути или псевдонимы, соответствующие корневым псевдонимам. Например,
array(
   'models'=>'application.models',              // an existing alias
   'extensions'=>'application.extensions',      // an existing alias
   'backend'=>dirname(__FILE__).'/../backend',  // a directory
)
Исходный код: framework/base/CModule.php#242 (показать)
public function setAliases($mappings)
{
    foreach(
$mappings as $name=>$alias)
    {
        if((
$path=Yii::getPathOfAlias($alias))!==false)
            
Yii::setPathOfAlias($name,$path);
        else
            
Yii::setPathOfAlias($name,$alias);
    }
}

Определяет корневые псевдонимы.

setBasePath() метод

public void setBasePath(string $path)
$path string корневой каталог модуля.
Исходный код: framework/base/CModule.php#161 (показать)
public function setBasePath($path)
{
    if((
$this->_basePath=realpath($path))===false || !is_dir($this->_basePath))
        throw new 
CException(Yii::t('yii','Base path "{path}" is not a valid directory.',
            array(
'{path}'=>$path)));
}

Устанавливает корневой каталог модуля. Этот метод можно вызывать только в начале конструктора.

setComponent() метод

public void setComponent(string $id, array|IApplicationComponent $component, boolean $merge=true)
$id string ID компонента
$component array|IApplicationComponent компонент приложения (массив конфигурации или экземпляр). Если этот параметр null, компонент будет загружен из модуля.
$merge boolean сливать новую конфигурацию компонента с существующей. По умолчанию true, означающее, что существующая конфигурация компонента с тем же ID будет слита с новой конфигурацией. Если false, существующая конфигурация будет полностью заменена. Этот параметр доступен начиная с 1.1.13.
Исходный код: framework/base/CModule.php#414 (показать)
public function setComponent($id,$component,$merge=true)
{
    if(
$component===null)
    {
        unset(
$this->_components[$id]);
        return;
    }
    elseif(
$component instanceof IApplicationComponent)
    {
        
$this->_components[$id]=$component;

        if(!
$component->getIsInitialized())
            
$component->init();

        return;
    }
    elseif(isset(
$this->_components[$id]))
    {
        if(isset(
$component['class']) && get_class($this->_components[$id])!==$component['class'])
        {
            unset(
$this->_components[$id]);
            
$this->_componentConfig[$id]=$component; //we should ignore merge here
            
return;
        }

        foreach(
$component as $key=>$value)
        {
            if(
$key!=='class')
                
$this->_components[$id]->$key=$value;
        }
    }
    elseif(isset(
$this->_componentConfig[$id]['class'],$component['class'])
        && 
$this->_componentConfig[$id]['class']!==$component['class'])
    {
        
$this->_componentConfig[$id]=$component; //we should ignore merge here
        
return;
    }

    if(isset(
$this->_componentConfig[$id]) && $merge)
        
$this->_componentConfig[$id]=CMap::mergeArray($this->_componentConfig[$id],$component);
    else
        
$this->_componentConfig[$id]=$component;
}

Добавляет компонент в управление модулем. Компонент будет инициализирован вызовом его метода init(), если это ещё не сделано.

setComponents() метод

public void setComponents(array $components, boolean $merge=true)
$components array компоненты приложения (id=>конфигурация или экземпляры компонента)
$merge boolean сливать новую конфигурацию компонента с существующей. По умолчанию true, означающее, что существующая конфигурация компонента с тем же ID будет слита с новой конфигурацией. Если false, существующая конфигурация будет полностью заменена.
Исходный код: framework/base/CModule.php#505 (показать)
public function setComponents($components,$merge=true)
{
    foreach(
$components as $id=>$component)
        
$this->setComponent($id,$component,$merge);
}

Устанавливает компоненты приложения.

При использовании конфигурации для определения компонента, она должна содержать начальные значения свойств компонента (парные имя-значение). Кроме того, компонент может быть включен (по умолчанию) или отключен, указав значение 'enabled' в конфигурации.

Если конфигурация указана с ID, совпадающим с существующим компонентом или конфигурацией, существующий будет заменён без ошибок.

Вот конфигурация для двух компонентов:

array(
    'db'=>array(
        'class'=>'CDbConnection',
        'connectionString'=>'sqlite:path/to/file.db',
    ),
    'cache'=>array(
        'class'=>'CDbCache',
        'connectionID'=>'db',
        'enabled'=>!YII_DEBUG,  // enable caching in non-debug mode
    ),
)

setId() метод

public void setId(string $id)
$id string ID модуля
Исходный код: framework/base/CModule.php#136 (показать)
public function setId($id)
{
    
$this->_id=$id;
}

Устанавливает ID модуля.

setImport() метод

public void setImport(array $aliases)
$aliases array список импортируемых псевдонимов
Исходный код: framework/base/CModule.php#223 (показать)
public function setImport($aliases)
{
    foreach(
$aliases as $alias)
        
Yii::import($alias);
}

Устанавливает псевдонимы, используемые в модуле.

setModulePath() метод

public void setModulePath(string $value)
$value string директория, содержащая модули приложения.
Исходный код: framework/base/CModule.php#212 (показать)
public function setModulePath($value)
{
    if((
$this->_modulePath=realpath($value))===false || !is_dir($this->_modulePath))
        throw new 
CException(Yii::t('yii','The module path "{path}" is not a valid directory.',
            array(
'{path}'=>$value)));
}

Устанавливает директорию, содержащую модули приложения.

setModules() метод

public void setModules(array $modules, boolean $merge=true)
$modules array конфигурации модулей.
$merge boolean следует ли объединить новую конфигурацию модулей со старой. По умолчанию true, означая, что ранее зарегистрированная конфигурация модуля с тем же идентификатором будет объединена с новой. Если установлено в false, существующая конфигурация будет полностью заменена. Этот параметр доступен начиная с версии 1.1.16.
Исходный код: framework/base/CModule.php#341 (показать)
public function setModules($modules,$merge=true)
{
    foreach(
$modules as $id=>$module)
    {
        if(
is_int($id))
        {
            
$id=$module;
            
$module=array();
        }
        if(isset(
$this->_moduleConfig[$id]) && $merge)
            
$this->_moduleConfig[$id]=CMap::mergeArray($this->_moduleConfig[$id],$module);
        else
        {
            if(!isset(
$module['class']))
            {
                if (
Yii::getPathOfAlias($id)===false)
                    
Yii::setPathOfAlias($id,$this->getModulePath().DIRECTORY_SEPARATOR.$id);
                
$module['class']=$id.'.'.ucfirst($id).'Module';
            }
            
$this->_moduleConfig[$id]=$module;
        }
    }
}

Конфигурирует подмодули этого модуля.

Вызовите этот метод, чтобы объявить подмодули и настроить их начальными значениями свойств. Параметром должен быть массив конфигураций модулей. Каждый элемент массива представляет отдельный модуль, который может быть либо строкой, представляющей идентификатор модуля, либо парой "идентификатор-конфигурация", представляющей модуль с указанным идентификатором и начальными значениями свойств.

Например, следующий массив объявляет два модуля:

array(
    'admin',                // a single module ID
    'payment'=>array(       // ID-configuration pair
        'server'=>'paymentserver.com',
    ),
)


По умолчанию класс модуля определяется с помощью выражения ucfirst($moduleID).'Module'. А файл класса расположен в modules/$moduleID. Вы можете переопределить это значение по умолчанию, явно указав опцию 'class' в конфигурации.

Вы также можете включить или отключить модуль, указав опцию 'enabled' в конфигурации.

setParams() метод

public void setParams(array $value)
$value array пользовательские параметры. Должны быть в виде пар "имя-значение".
Исходный код: framework/base/CModule.php#188 (показать)
public function setParams($value)
{
    
$params=$this->getParams();
    foreach(
$value as $k=>$v)
        
$params->add($k,$v);
}

Устанавливает пользовательские параметры.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CModule

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API