letsrock / bitrock
Requires
- php: >=7.3.0
- fakerphp/faker: ^1
- illuminate/filesystem: ^8.38
- letsrock/creatable-model: ^1
- letsrock/error-trait: ^1
- letsrock/hlmodel: ^1.1.5
- letsrock/letsenv: ^1
- letsrock/logger: >=1.1
- letsrock/router: 1.2.1
- letsrock/singleton: ^1
- letsrock/view: ^1
- nikic/fast-route: ^1.3
- symfony/http-foundation: 5.3.2
- tightenco/collect: ^8.19
Requires (Dev)
- symfony/var-dumper: ^5.2
This package is not auto-updated.
Last update: 2024-10-02 21:14:38 UTC
README
连接到项目
为了让 Bitrock 在项目上运行,需要
- 在项目中的某个文件夹中创建配置文件 (.env);
- 设置环境变量设置(其描述见 .env.example 文件);
- 在 init.php 中加载 composer-autoload 中的文件;
(接下来是内核操作:在 init.php 文件中使用 Bitrock\LetsCore)
- 调用静态方法 LetsCore::parseConfiguration($envPath),其中 $envPath 是之前创建的 .env 文件所在的文件夹路径(即文件夹,而不是文件);
- 调用方法 LetsCore::getInstance()->execute() 以使内核连接伴随其而来的服务(例如,在创建和修改信息块时自动生成模型);
- 调用方法 LetsCore::getInstance()->executeContainer() 以创建服务容器
使用自己的类
为了在 Bitrock 中使用自己的类(例如,控制器,用于处理路由,或将在配置中注入的类)并与 Bitrock 配合使用,需要按照以下方式将它们添加到 composer-autoload 中
"autoload": { "psr-4": { "*Неймспейс*\\": "директория" } }
启动路由器
-
为了启动路由器,需要将 .env 中的 BOOTSTRAP_MODE 设置为一个非空值 [1];
-
指定处理路由器的文件路径,相对于网站根目录,BOOTSTRAP_PATH 在 .env 中;
2.1. 不要忘记创建该路径上的文件(bootstrap.php);
-
在 .env 中指定所有 ajax 请求将到达的虚拟路径,BOOTSTRAP_URL (/ajax-virtual/,默认值);
-
现在需要在服务器设置中设置从 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();
- 添加可处理的路由(对于 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 类用于在调整图片大小时减少代码量。
这是通过将每个调整大小的设置放入单独的文件中实现的,从而不会干扰使用调整大小的代码。
使用
-
需要在 .env 中指定返回调整大小设置的文件路径(RESIZES_STORAGE_PATH);
-
创建此文件,内容如下
#!php
return [
'FIRST_RESIZE' => [
'WIDTH' => 350,
'HEIGHT' => 350,
'BX_RESIZE' => BX_RESIZE_IMAGE_PROPORTIONAL
]
]
在这里 'FIRST_RESIZE' - 键,以后可以使用它来使用调整大小,其中包含特定调整大小的设置
;
- 在代码中使用调整大小器
#!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 字符串数据,并接受以下参数:
$data
- 返回的数据数组;$message
- 服务器返回的消息;$status
- 脚本执行状态(对于执行 JavaScript 动作可能很重要);$httpStatus (默认值为 200)
- 服务器返回的状态码。
render 方法返回服务器上的视图片段(通常是 PHP 文件),并接受以下参数:
$viewName
- 将返回的视图文件名称;$params
- 包含参数的数组,这些参数将被封装到变量中,并可用于视图文件内部,其中参数的键将成为变量的名称,而参数的值将成为该变量的值;$httpStatus (默认值为 200)
- 服务器返回的状态码。
TODO
- 每个服务都有自己的日志文件
- 在视图中进行缓存