You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<?phpuseBitrix\Main\IO,
Bitrix\Main\Application;
/** IO\File */$file = newIO\File(Application::getDocumentRoot() . "/file.txt");
// Информация о файле$isExist = $file->isExists(); // true, если файл существует$dir = $file->getDirectory(); // Директория файла в виде объекта IO\Directory$dir = $file->getDirectoryName(); // Директория файла$fileName = $file->getName(); // Имя файла$fileExt = $file->getExtension(); // Расширение файла$fileSize = $file->getSize(); // Размер файла в байтах$contentType = $file->getContentType(); // Content-type$createdAt = $file->getCreationTime(); // Дата создания, timestamp$accessAt = $file->getLastAccessTime(); // Дата последнего доступа, timestamp$modifiedAt = $file->getModificationTime(); // Дата модификации, timestamp$perms = $file->getPermissions(); // Права на файл в виде десятичного числа$perms = substr(sprintf('%o', $file->getPermissions()), -3); // Права на файл в виде восьмеричного числа// Действия над файлами$content = $file->getContents(); // Получить содержание файла$file->putContents("data"); // Записать содержимое в файл с заменой$file->putContents("data", IO\File::APPEND); // Дописать содержимое в конец файла$file->readFile(); // Вывести содержимое файла$file->rename(Application::getDocumentRoot() . "/new_file.txt"); // Переместить/переименовать файл$file->delete(); // Удалить файл// статические варианты$path = Application::getDocumentRoot() . "/another_file.txt";
IO\File::isFileExists($path); // Проверить существование файлаIO\File::getFileContents($path); // Получить содержание файлаIO\File::putFileContents($path, "data"); // Записать содержимое в файл с заменойIO\File::putFileContents($path, "data", self::APPEND); // Дописать содержимое в конец файлаIO\File::deleteFile($path); // Удалить файл/** IO\Directory */$dir = newIO\Directory(Application::getDocumentRoot() . "/test/");
$dir->create(); // Создаёт директорию с указанным в конструкторе путём// Информация о директории$isExist = $dir->isExists(); // true, если директория существует$createdAt = $dir->getCreationTime(); // Дата создания, timestamp$accessAt = $dir->getLastAccessTime(); // Дата последнего доступа, timestamp$modifiedAt = $dir->getModificationTime(); // Дата модификации, timestamp$perms = $dir->getPermissions(); // Права на директорию в виде десятичного числа$perms = substr(sprintf('%o', $dir->getPermissions()), -3); // Права на директорию в виде восьмеричного числа// Действия над директориями$childDir = $dir->createSubdirectory("child"); // Создает и возвращает вложенную директорию с указанным именем $dir->rename(Application::getDocumentRoot() . "/another_path/"); // Переместить/переименовать директорию$dir->delete(); // Удалить директорию// Получить массив файлов в директории$files = $dir->getChildren(); // Массив объектов IO\File// статические варианты$path = Application::getDocumentRoot() . "/another_dir/";
IO\Directory::createDirectory($path); // Создать директориюIO\Directory::deleteDirectory($path); // Удалить директориюIO\Directory::isDirectoryExists($path); // Проверить существование/** IO\Path */$path = Application::getDocumentRoot() . "/some_dir/some_file.ext";
$fileExt = IO\Path::getExtension($path); // Возвращает расширение файла$fileName = IO\Path::getName($path); // Возвращает имя файла$fileDir = IO\Path::getDirectory($path); // Возвращает директорию файла (полный путь)
<?phpuseBitrix\Main\Type\DateTime;
// Объект Datetime является практически аналогом встроенного в PHP класса \DateTime, но от него не наследуется. // Объект Битрикс-класса можно получить из объекта PHP-класса с помощью метода createFromPhp или из timestamp с помощью createFromTimestamp$objDateTime = DateTime::createFromPhp(new \DateTime('2000-01-01'));
$objDateTime = DateTime::createFromTimestamp(1346506620);
// Также есть конструкторы// Текущее время:$objDateTime = newDateTime();
// Из строки в формате текущего сайта$objDateTime = newDateTime("25.12.2012 12:30:00");
// Из строки с указанием формата:$objDateTime = newDateTime("2007-05-14 12:10:00", "Y-m-d H:i:s");
// Из объекта можно получить представление в виде timestamp$objDateTime->getTimestamp();
// в виде строки в формате текущего сайта$objDateTime->toString();
// в произвольном формате (фактически обёртка над DateTime::format)$objDateTime->format("Y-m-d H:i:s");
// Метод add реализует сложение и вычитание дат, // можно указывать смещение словами years, months, days, weeks, hours, minutes, seconds и знаками +/-// Метод add изменяет объект$objDateTime = newDateTime("01.01.2012 00:00:00"); // "2012-01-01 00:00:00"$objDateTime->add("1 day"); // "2012-01-01 00:00:00" => "2012-01-02 00:00:00"$objDateTime->add("-1 day"); // "2012-01-01 00:00:00" =>"2011-12-31 00:00:00"$objDateTime->add("3 months - 5 days + 10 minutes"); // "2012-01-01 00:00:00" =>"2012-03-27 00:10:00"// Также в add можно указывать смещение в формате DateInterval (но буква P в начале строки необязательна)$objDateTime = newDateTime("01.01.2012 00:00:00"); // "2012-01-01 00:00:00"$objDateTime->add("7M5DT2M"); // "2012-01-01 00:00:00" =>"2012-08-06 00:02:00"$objDateTime->add("-2YT10M"); // "2012-01-01 00:00:00" =>"2009-12-31 23:50:00"// При указании смещения следует указывать периоды, от большей единицы до меньшей (например, года, месяцы, часы)
<?php// Выбрать все варианты значений свойства типа Список с идентификатором 10$rsEnum = \Bitrix\Iblock\PropertyEnumerationTable::getList([
'filter' => ['PROPERTY_ID' => 10],
'select' => ['ID'],
'cache' => ['ttl', 2678400],
]);
while($arEnum = $rsEnum->fetch())
{
print_r($arEnum);
}
Данные текущего пользователя
<?php// ID текущего авторизованного пользователя$userId = \Bitrix\Main\Engine\CurrentUser::get()->getId();
// авторизован ли пользователь$isAuth = (bool)\Bitrix\Main\Engine\CurrentUser::get()->getId();
// админ?$isAdmin = \Bitrix\Main\Engine\CurrentUser::get()->isAdmin();
// логин текущего пользователя$login = \Bitrix\Main\Engine\CurrentUser::get()->getLogin();
// массив групп текущего пользователя$arUserGroups = \Bitrix\Main\Engine\CurrentUser::get()->getUserGroups();
// имя, фамилию и пр. текущего пользователя, отформатированное в соответствии с настройками$userName = \Bitrix\Main\Engine\CurrentUser::get()->getFormattedName();
// полное имя текущего пользователя$fullUserName = \Bitrix\Main\Engine\CurrentUser::get()->getFullName();
// имя текущего пользователя$userName = \Bitrix\Main\Engine\CurrentUser::get()->getName();
// фамилию текущего пользователя$lastName = \Bitrix\Main\Engine\CurrentUser::get()->getLastName();
// отчество текущего пользователя$secondName = \Bitrix\Main\Engine\CurrentUser::get()->getSecondName();
// может ли текущий пользователь выполнить операцию с кодом операции в переменной $operationName$canDoOperation = \Bitrix\Main\Engine\CurrentUser::get()->canDoOperation($operationName);
Свойства элемента
<?php// Свойства элементов (когда мы работаем с ними в виде объекта) получаются при помощи геттеров // (методов getXXXX где XXXX — код свойства записанный как CamelCase). // У каждого свойства есть поле значения VALUE и описания DESCRIPTION // и соответcтвующие методы для доступа к ним getValue() и getDescription().$product = \Bitrix\Iblock\Elements\ElementProductsTable::getByPrimary(10, [ //10 - ID товара'select' => ['ID', 'NAME', 'PREVIEW_TEXT', 'DETAIL_PICTURE', 'MANUFACTURER', 'MATERIAL'], //MANUFACTURER и MATERIAL свойства типа «Строка»
])->fetchObject();
// свойства типа Текст или Число$product->getManufacturer()->getValue();
// Получить значения коллекции множественного свойства типа Справочник$elements = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
'select' => ['ID', 'NAME', 'DETAIL_PICTURE', 'BRAND_REF'],
'filter' => [
'ID' => $elementId,
],
])->fetchCollection();
foreach ($elementsas$element) {
foreach ($element->getBrandRef()->getAll() as$value) {
var_dump($value->getValue()); // string(6) "brand1"
}
}
// Чтобы получить дополнительную информацию для некоторых типов свойств,// нужно указать дополнительный ключ при выборке свойства:// FILE — свойство типа файл// ITEM — свойство типа список,// ELEMENT — свойство типа привязка к элементу инфоблока// SECTION — свойство типа привязка к разделу инфоблока// Например, у элемента есть следующие свойства типов:// MORE_PHOTO — Картинки галереи (тип файл)// NEWPRODUCT — Новинка (тип список)// RECOMMEND — С этим товаром рекомендуем (тип привязка к элементу)// NEWS_SECTION — Показывать в рекламном блоке в новостях (тип привязка к разделу)$product = \Bitrix\Iblock\Elements\ElementProductsTable::getByPrimary(10, [
'select' => [
'ID',
'NAME',
'PREVIEW_TEXT',
'DETAIL_PICTURE',
'MORE_PHOTO.FILE',
'NEWPRODUCT.ITEM',
'RECOMMEND.ELEMENT',
'NEWS_SECTION.SECTION'
],
])->fetchObject();
// Свойство типа файл//Выведем доп.фотографии товараforeach ($product->getMorePhoto()->getAll() as$photo){
echo'<img src="/upload/' . $photo->getFile()->getSubdir() . '/' . $photo->getFile()->getFileName() . '" alt="'. $product->getName() .'" />';
}
// Свойство типа список$product->getNewproduct()->getItem()->getId();
//int(1)$product->getNewproduct()->getItem()->getXmlId();
//string(1) "Y"$product->getNewproduct()->getItem()->getValue();
//string(4) "да"// Свойство типа привязка к элементам инфоблока//Получим привязанные элементыforeach ($product->getRecommend()->getAll() as$recommendedProduct){
echo'Рекомендуемый товар ID -' . $recommendedProduct->getElement()->getId() . ' наименование - ' . $recommendedProduct->getElement()->getName() . '<br/>';
}
// Свойство типа привязка к разделу инфоблока//Получим id привязанного раздела$product->getNewsSection()->getSection()->getId();
//Получим наименование привязанного раздела$product->getNewsSection()->getSection()->getName();
Работа с базой данных
<?php// Получить соединение с основной базой данных$connection = \Bitrix\Main\Application::getConnection();
// Подключение к дополнительной базе данных$connection = \Bitrix\Main\Application::getConnection(DB_NAME);
$result = $connection->query('SELECT * FROM table_name ORDER BY id DESC');
// dropTableif ($connection->isTableExists(TABLE_NAME))
$connection->dropTable(TABLE_NAME);
// create table$sql = 'CREATE TABLE IF NOT EXISTS `'.TABLE_NAME.'` ('.implode(',', $arColumns).');';
$connection->queryExecute($sql);
// Запрос без получения результата$sql = "INSERT INTO ".TABLE_NAME."(".$insert[0].") "."VALUES (".$insert[1].")";
$connection->queryExecute($sql);
// Подготовка строки для использования в sql-запросе (максимальная длина - 50 символов)$sqlHelper = $connection->getSqlHelper();
$string = $sqlHelper->forSql($string, 50);
// Скалярный запрос (возвращает не набор данных, а конкретное значение)$count = $connection->queryScalar("SELECT COUNT(ID) FROM table_name");
Методы класса Result
<?php// Result - абстрактный класс для представления данных, полученных в ходе запроса.// Элемент инфоблока как объект// В данном случае, в $product будет получен объект класса Bitrix\Iblock\Elements\EO_ElementProducts$product = \Bitrix\Iblock\Elements\ElementProductsTable::getByPrimary(10, [ //10 - ID товара'select' => ['ID', 'NAME', 'PREVIEW_TEXT', 'DETAIL_PICTURE', 'MANUFACTURER_' => 'MANUFACTURER', 'MATERIAL_'=>'MATERIAL'],
])->fetchObject();
// Для получения значений элемента инфоблока используются геттеры // (методы getXXXX где XXX — название поля в «верблюжьей нотации» или CamelCase).//Получить id товараecho$product->getId(); //10//Получить наименование товараecho$product->getName(); //"Платье Красная Фея"//Получить id детального изображенияecho$product->getDetailPicture(); //68// Существует так же общий метод get() который принимает наименование поля, значение которого вам нужно получить//Получим id элементаecho$product->Get('ID'); // 10//Получим наименование элементаecho$product->Get('NAME'); // "Платье Красная фея"