My classes - uniqcle/Bitrix GitHub Wiki
Определение пространства имен
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");
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.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 // Класс для работы с датой и временем