gastor-git
7/27/2017 - 5:59 PM

D7 замена старых методов

D7 замена старых методов

Подключение модулей

<?php
use Bitrix\Main\Loader; 

Loader::includeModule("iblock"); 
Loader::includeSharewareModule("intervolga.tips");

Локализация

<?php
use Bitrix\Main\Localization\Loc; 

Loc::loadMessages(__FILE__); 
echo Loc::getMessage("INTERVOLGA_TIPS.TITLE"); 

Регистрация событий

<?php
use Bitrix\Main\EventManager; 

$handler = EventManager::getInstance()->addEventHandler( 
    "main", 
    "OnUserLoginExternal", 
    array( 
        "Intervolga\\Test\\EventHandlers\\Main", 
        "onUserLoginExternal" 
    ) 
); 
EventManager::getInstance()->removeEventHandler( 
    "main", 
    "OnUserLoginExternal", 
    $handler 
); 
EventManager::getInstance()->registerEventHandler( 
    "main", 
    "OnProlog", 
    $this->MODULE_ID, 
    "Intervolga\\Test\\EventHandlers", 
    "onProlog" 
); 
EventManager::getInstance()->unRegisterEventHandler( 
    "main", 
    "OnProlog", 
    $this->MODULE_ID, 
    "Intervolga\\Test\\EventHandlers", 
    "onProlog" 
); 
$handlers = EventManager::getInstance()->findEventHandlers("main", "OnProlog");

Работа с кэшем

<?php
$cache = Bitrix\Main\Data\Cache::createInstance(); 
if ($cache->initCache($cacheTime, $cacheId, $cacheDir)) 
{ 
    $result = $cache->getVars(); 
} 
elseif ($cache->startDataCache()) 
{ 
    $result = array(); 
    // ... 
    if ($isInvalid) 
    { 
        $cache->abortDataCache(); 
    } 
    // ... 
    $cache->endDataCache($result); 
}
//Описание параметров метода initCache:
/**
 * @access public
 * @param mixed $TTL Время жизни кеша в секундах.
 * @param mixed $uniqueString Уникальный идентификатор кеша.
 * @param bool $initDir (default: false) Папка, в которой хранится кеш, относительно /bitrix/cache/
 * @param string $baseDir (default: "cache") Базовая директория кеша. По умолчанию равен cache
 * @return bool true, если кеш валидный
 */
public function initCache($TTL, $uniqueString, $initDir = false, $baseDir = "cache")

Управляемый кеш

// cache является объектом \Bitrix\Main\Data\ManagedCache
$cache = \Bitrix\Main\Application::getInstance()->getManagedCache();
// пример использования
if ($cache->read($cacheTtl, $cacheId)) {
    $vars = $cache->get($cacheId); // достаем переменные из кеша
} else {
    // некоторые действия...
    $cache->set($cacheId, array("key" => $value)); // записываем в кеш
}
// Для принудительной очистки кеша по ключу используем:
$cache->clean($cacheId);

Поключение js и css

<?php
use Bitrix\Main\Page\Asset; 

Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . "/js/fix.js"); 
Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . "/styles/fix.css"); 
Asset::getInstance()->addString("<link href='http://fonts.googleapis.com/css?family=PT+Sans:400&subset=cyrillic' rel='stylesheet' type='text/css'>"); 

Подключение js и css в шаблонах на D7

<?php
$this->addExternalCss("/local/styles.css");
$this->addExternalJS("/local/liba.js");

Файловая структура

<?php
use Bitrix\Main\Application; 
use Bitrix\Main\IO\Directory; 
use Bitrix\Main\IO\File; 

Directory::createDirectory( 
    Application::getDocumentRoot() . "/foo/bar/baz/" 
); 
File::putFileContents( 
Application::getDocumentRoot() . "/foo/bar/baz/1.txt", 
    "hello from D7" 
); 
Directory::deleteDirectory( 
    Application::getDocumentRoot() . "/foo/bar/baz/" 
);
// вместо $_SERVER["DOCUMENT_ROOT"] сейчас можно использовать Bitrix\Main\Application::getDocumentRoot() .

Исключения

<?php
use Bitrix\Main\SystemException; 

try 
{ 
    // ... 
    throw new SystemException("Error"); 
} 
catch (SystemException $exception) 
{ 
    echo $exception->getMessage(); 
}

Отладка

<?php
use Bitrix\Main\Diag\Debug; 

Debug::dumpToFile($_SERVER); 
// or 
Debug::writeToFile($_SERVER); 

Debug::dump($_SERVER);

// time labels
Debug::startTimeLabel("foo"); 
foo(); 
Debug::endTimeLabel("foo"); 

Debug::startTimeLabel("bar"); 
bar(); 
Debug::endTimeLabel("bar"); 
print_r(Debug::getTimeLabels());

Почтовые события

<?php
use Bitrix\Main\Mail\Event; 
Event::send(array( 
    "EVENT_NAME" => "NEW_USER", 
    "LID" => "s1", 
    "C_FIELDS" => array( 
        "EMAIL" => "info@intervolga.ru", 
        "USER_ID" => 42 
    ), 
));

Работа с GET- и POST-параметрами страницы

<?php
use Bitrix\Main\Application; 
$request = Application::getInstance()->getContext()->getRequest(); 

$name = $request->getPost("name"); 
$email = htmlspecialchars($request->getQuery("email"));

Работа с cookie

<?php
use Bitrix\Main\Application; 
use Bitrix\Main\Web\Cookie; 
$cookie = new Cookie("TEST", 42); 
$cookie->setDomain("example.com"); 
Application::getInstance()->getContext()->getResponse()->addCookie($cookie); 
// Cookie будет доступна только на следующем хите! 
echo Application::getInstance()->getContext()->getRequest()->getCookie("TEST");

Работа со ссылками

<?php
use Bitrix\Main\Application; 
use Bitrix\Main\Web\Uri; 

$request = Application::getInstance()->getContext()->getRequest(); 
$uriString = $request->getRequestUri(); 
$uri = new Uri($uriString); 
$uri->deleteParams(array("baz")); 
$uri->addParams(array("foo" => "bar")); 
$redirect = $uri->getUri();

Настройки модулей

<?php
use Bitrix\Main\Config\Option; 

Option::set("main", "max_file_size", "1024"); 
$size = Option::get("main", "max_file_size"); 
Option::delete("main", array( 
    "name" => "max_file_size", 
    "site_id" => "s2" 
    ) 
);