My classes - uniqcle/Bitrix GitHub Wiki

namespace

Определение пространства имен

namespace Academy\OOP; 
class main {
	...
	public function GetPath(){
		...
	}
}

// Вызов метода из пространства имен класса
\Academy\OOP\main::GetPath(); 
Использование синонимов.
//Вместо
\Bitrix\Main\Localization\Loc::getMessage("ACADEMY_OOP_MODULE_DESC"); 
\Bitrix\Main\Localization\Loc::getMessage("ACADEMY_OOP_MODULE_ASC");
\Bitrix\Main\Localization\Loc::getMessage("NAME");

//Используем так. Но могут повторяться имена классов из разных namespaces
use \Bitrix\Main\Localization\Loc; 
...
Loc::getMessage("ACADEMY_OOP_MODULE_DESC"); 
Loc::getMessage("ACADEMY_OOP_MODULE_ASC");
Loc::getMessage("NAME");


//ЛУЧШЕ ТАК! 
use \Bitrix\Main\Localization\Loc as LC; 
...
LC::getMessage("ACADEMY_OOP_MODULE_DESC"); 
LC::getMessage("ACADEMY_OOP_MODULE_ASC");
LC::getMessage("NAME");
Loader::includeModule
// Old school
CModule::IncludeModule("iblock");
CModule::IncludeModuleEx("intervolga.tips");

// D7
use Bitrix\Main\Loader;

Loader::includeModule("iblock");
Loader::includeSharewareModule("intervolga.tips");
Loc::getMessage
// Old school
IncludeTemplateLangFile(__FILE__);
echo GetMessage("INTERVOLGA_TIPS.TITLE");

// D7
use Bitrix\Main\Localization\Loc;

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

Автозагрузка классов

Через Bitrix Loader::registerAutoLoadClasses

init.php

...
#автоподключение классов проекта. Обычно такие пишут для облегчения повторяющихся операций
require_once(__DIR__ . '/skillbox/autoloadProjectClass.php');
...

local/php_interface/skillbox/autoloadProjectClass.php

use Bitrix\Main\Loader;

Loader::registerAutoLoadClasses(null, [
	#Класс с NAMESPACE -> файл с классом
	'\Skillbox\Catalog' => '/local/php_interface/skillbox/class/Catalog.php',
        '\Skillbox\User' => '/local/php_interface/skillbox/class/User.php',
]);

Далее используем в коде

use \Skillbox\User
...

Через стандартный php автозагрузчик

//php.ini
# автолоадер проекта
if(file_exists( $_SERVER['DOCUMENT_ROOT'] . '/local/app/autoload.php' )){
	require_once( $_SERVER['DOCUMENT_ROOT'] . '/local/app/autoload.php' );
}

local/app/autoload.php

spl_autoload_register(function ($className) {
	$classPath = str_replace('\\', '/', $className);
	$file = __DIR__ . "/$classPath.php";
	if (file_exists($file)) {
		include_once $file;
	}
});

local/app/Models/Car.php

// Car.php
namespace Models;

class Car{
	public function drive(){
		$a = 'класс Car, метод drive';
		return $a;
	}
}

Использование

use \Models\Car;

$car = new Car();
$showCar = $car->drive();
var_dump($showCar);

Через подключенные свои модули

Обязательно, чтобы была папочка lib Он автоматически все классы подтянет из нее. local/modules/red.emptyd7/lib/Models

ExampleTable.php

namespace Reds\Emptyd7\Models;

class ExampleTable{

    public function show()
    {
        $a = 'класс ExampleTable метод show';
        return $a;
    }
}
use Reds\Emptyd7\Models\ExampleTable;
CModule::IncludeModule('reds.emptyd7');

$car = new ExampleTable();
$showcar = $car -> show();
var_dump($showcar);
Useful D7 Classes
\Bitrix\Main\IO\Path         // Работа с путями
\Bitrix\Main\IO\Directory    // Класс для работы с папками (копирование, перемещение, удаление)
\Bitrix\Main\IO\File         // Различные действия с файлами

\Bitrix\Main\Web\HttpClient  // Класс для работы с http. Выполняет запросы, обычно на удаленные сервера
$http = new \Bitrix\Main\Web\HttpClient(array $options=null); 
$http->get($url);            // Выполняет get запрос
$http->post($url, $postData);// post запрос
$http->setCookies($cookies); // установка cookies
$http->setAuthorization($user, $pass); // Авторизация 
$http->download($url, $path);          // Загрузка файла с удаленного сервера

\Bitrix\Main\Web\Uri          // Класс для работы с url

\Bitrix\Main\Type\Date       // Класс для работы с датой
\Bitrix\Main\Type\DateTime   // Класс для работы с датой и временем
⚠️ **GitHub.com Fallback** ⚠️