ООП в своем компоненте
Минималистичный скрипт для использования ООП в своем компоненте Bitrix.
Оказывается, канонично использовать
class CDemoTest extends CBitrixComponent{}
с методом executeComponent()
.
Все что написано ниже, оставлено для истории. Пользоваться этим не рекомендуется.
- component.php
<?php // пространство имен - не обязательно namespace Myspace; // если работаем в пространстве имен - создаем "алиасы" use \CBitrixComponent as CBitrixComponent, \CModule as CModule; // защита от прямого вызова defined('B_PROLOG_INCLUDED') or die(); // защита, если компонент используется на странице более одного раза if(!class_exists('MyComponent')) { class MyComponent { // зависимости protected $bxComponent, $app, $db, $user, $userID, $cacheID; public function __construct(CBitrixComponent $bxComponent) { $this->bxComponent = $bxComponent; // Связываем классические $arResult и $arParams со свойствами объекта $this->arResult =& $this->bxComponent->arResult; $this->arParams =& $this->bxComponent->arParams; // создаем ссылки на глобальные переменные global $APPLICATION, $DB, $USER; $this->app = $APPLICATION; $this->db = $DB; $this->user = $USER; $this->userID = $this->user->GetID(); CModule::IncludeModule('iblock'); } protected $cacheParams; public function run() { // параметры, от которых зависят данные кеша // например, array($this->userID, $this->arParams['SECTION_ID']) $this->cacheParams = array(); $this->tryViewCache(); // тут свой код $this->viewIndex(); } // Пробуем кеширование protected function tryViewCache() { if (!$this->bxComponent->startResultCache(false, $this->cacheParams)) { $this->bxComponent->IncludeComponentTemplate(); } else { $this->bxComponent->abortResultCache(); } } protected function viewIndex() { if ($this->bxComponent->startResultCache(false, $this->cacheParams)) { $this->bxComponent->IncludeComponentTemplate(); $this->bxComponent->endResultCache(); } } } } $Component = new MyComponent($this); $Component->run();