letsrock/bitrock

dev-master 2023-11-29 16:44 UTC

README

连接到项目

为了让 Bitrock 在项目上运行,需要

  1. 在项目中的某个文件夹中创建配置文件 (.env);
  2. 设置环境变量设置(其描述见 .env.example 文件);
  3. 在 init.php 中加载 composer-autoload 中的文件;

(接下来是内核操作:在 init.php 文件中使用 Bitrock\LetsCore)

  1. 调用静态方法 LetsCore::parseConfiguration($envPath),其中 $envPath 是之前创建的 .env 文件所在的文件夹路径(即文件夹,而不是文件);
  2. 调用方法 LetsCore::getInstance()->execute() 以使内核连接伴随其而来的服务(例如,在创建和修改信息块时自动生成模型);
  3. 调用方法 LetsCore::getInstance()->executeContainer() 以创建服务容器

使用自己的类

为了在 Bitrock 中使用自己的类(例如,控制器,用于处理路由,或将在配置中注入的类)并与 Bitrock 配合使用,需要按照以下方式将它们添加到 composer-autoload 中

"autoload": { "psr-4": { "*Неймспейс*\\": "директория" } }

启动路由器

  1. 为了启动路由器,需要将 .env 中的 BOOTSTRAP_MODE 设置为一个非空值 [1];

  2. 指定处理路由器的文件路径,相对于网站根目录,BOOTSTRAP_PATH 在 .env 中;

    2.1. 不要忘记创建该路径上的文件(bootstrap.php);

  3. 在 .env 中指定所有 ajax 请求将到达的虚拟路径,BOOTSTRAP_URL (/ajax-virtual/,默认值);

  4. 现在需要在服务器设置中设置从 BOOTSTRAP_URL 到 BOOTSTRAP_PATH 的重定向

    4.1 Apache 的示例:用 .env 中指定的实际值替换 BOOTSTRAP_URL 和 BOOTSTRAP_PATH

    !!! 此块应放在所有其他重定向之前 !!!

<IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^(.*)BOOTSTRAP_URL(.*)$ BOOTSTRAP_PATH?$1 [QSA,L] </IfModule>

(接下来将讨论抽象类 Bitrock\Router\Router)5. 在 BOOTSTRAP_PATH 文件中连接到 composer 的加载,并解析 .env 中的环境变量

#!php
use Bitrock\LetsCore;
require($_SERVER['DOCUMENT_ROOT'] . '/local/vendor/autoload.php');
LetsCore::parseConfiguration($_SERVER['DOCUMENT_ROOT'] . '/local/');

5.1 在此文件中,需要调用路由器处理虚拟路径(默认使用 Bitrock\Router\FastRouter),但可以使用任何继承自 Bitrock\Router\Router 的路由器。可以通过初始化选定的路由器对象并调用其 handle() 方法来启动处理;

#!php
   $router = Bitrcok\Router\FastRouter::getInstance();
   // Роуты
   ...
   // подключаем массив с массив с классами для автолода для DI-контейнера:
   $definitions = require(массив с классами для автолода);
   $router->setContainerDefinitions($definitions);
   $router->handle();
  1. 添加可处理的路由(对于 FastRoute):在调用 handle() 方法之前,需要按照以下方式添加路由
#!php
$router->addRoute([
    $router::METHOD => [*Массив доступных методов('GET', 'POST')*],
    $router::URL => *урл роута(с учетом BOOTSTRAP_URL)*
    $router::HANDLER => [*Название класса контроллера*, *название метода, который будет вызван*]
])

示例

#!php
$bootstrapPath = Bitrock\LetsCore::getEnv(LetsCore::BOOTSTRAP_URL);
$router->addRoute([
    $router::METHOD => ['GET'],
    $router::URL => $bootstrapPath . 'test-route/'
    $router::HANDLER => [*Bitrock\Controllers\TestController*, 'testMethod']
])

因此,当尝试向路径 /ajax-virtual/test-route/ 发送 GET AJAX 请求时,将调用 TestController 类的 testMethod 方法

Bitrix 信息块的自动生成模型

Logger

包中的日志器实现了 psr 并在底层使用 Monolog。

使用

#!php
use Bitrock\Utils\Logger\Logger;
$logger = Logger::getInstance();
$logger->info(`User with login ${$login} successfully logged in`);

默认情况下,日志将记录在 .env 文件中指定的 LOG_PATH 文件中。

但可以通过 setLogPath() 方法更改记录日志的文件。

#!php
use Bitrock\Utils\Logger\Logger;
$logger = Logger::getInstance();
$logger->setLogPath(*Путь до лог-файла*);
$logger->info(`User with login ${$login} successfully logged in`);

Resizer Resizer 类用于在调整图片大小时减少代码量。

这是通过将每个调整大小的设置放入单独的文件中实现的,从而不会干扰使用调整大小的代码。

使用

  1. 需要在 .env 中指定返回调整大小设置的文件路径(RESIZES_STORAGE_PATH);

  2. 创建此文件,内容如下

#!php
return [
    'FIRST_RESIZE' => [
        'WIDTH' => 350,
        'HEIGHT' => 350,
        'BX_RESIZE' => BX_RESIZE_IMAGE_PROPORTIONAL
    ]
]

在这里 'FIRST_RESIZE' - 键,以后可以使用它来使用调整大小,其中包含特定调整大小的设置;

  1. 在代码中使用调整大小器
#!php
use Bitrock\Utils\Resizer;

$resizer = Resizer::getInstance();

//$resizedPicture = $resizer->getResizeImageArray(*массив файла для ресайза*, *Ключ ресайза из конфига*);
$resizedPicture = $resizer->getResizeImageArray($resizeArray, 'FIRST_RESIZE');

还有一个方法 getResizeImageArrayById($id, *配置中的调整大小键*),它允许通过文件 ID 而不是数据数组获取图片的调整大小

BitrockController

Bitrock\Controllers\Controller 类组织并简化了使用 AJAX 请求的工作,如果使用任何路由器。

为了使用控制器功能,需要创建自己的控制器并从 Bitrock\Controllers\Controller 继承。

这样就可以使用以下两个方法:json($data = [], $message = '', $status = true, $httpStatus)render($viewName, $params = [], $httpStatus)

json 方法

json 方法从服务器返回 json 字符串数据,并接受以下参数:

  1. $data - 返回的数据数组;
  2. $message - 服务器返回的消息;
  3. $status - 脚本执行状态(对于执行 JavaScript 动作可能很重要);
  4. $httpStatus (默认值为 200) - 服务器返回的状态码。

render 方法返回服务器上的视图片段(通常是 PHP 文件),并接受以下参数:

  1. $viewName - 将返回的视图文件名称;
  2. $params - 包含参数的数组,这些参数将被封装到变量中,并可用于视图文件内部,其中参数的键将成为变量的名称,而参数的值将成为该变量的值;
  3. $httpStatus (默认值为 200) - 服务器返回的状态码。

TODO

  • 每个服务都有自己的日志文件
  • 在视图中进行缓存