olifanton/interop . PHP-порт tonweb-boc JS Library
composer require olifanton/boc Установите пакет olifanton/boc через композитор и включите сценарий автозагрузки:
<?php declare (strict_types= 1 );
require __DIR__ . " /vendor/autoload.php " ;
use Olifanton Boc BitString ;
use Olifanton Boc Cell ;
// Now you can use BoC classesOlifantonBocBitString BitString - это класс, который позволяет вам манипулировать бинарными данными. BitString лежит в основе представления PHP ячеек TVM. BitString - это память оптимизирована для хранения бинарных данных. Внутренне, Bitstring использует реализацию Uint8Array , предоставленную пакетом ajf/typed-arrays , и используется в качестве базового типа для передачи двоичных данных между частями библиотек Олифантона.
Экземпляр Bitstring создается с помощью строго фиксированной длины. write% (writebit, writeuint, ...) Методы переместите внутренний курсор. Если вы попытаетесь написать значение, которое превышает длину бесплатных битов, будет выброшено исключение BitStringException .
/**
* @param int $length
*/
public function __construct( int $ length )Параметры:
$length - длина uint8array. Значение по умолчанию для ячейки TVM: 1023 (документация) Возвращает неиспользованные биты длины битстро.
Возвращает используемые биты длина битстронга.
Возврат используется байт длины битстронга.
/**
* @param int $n Position
*/
public function get( int $ n ): bool Возвращает бит в позиции $n .
/**
* @param int $n Position
*/
public function on( int $ n ): void Устанавливает битовое значение на 1 в позиции $n .
/**
* @param int $n Position
*/
public function off( int $ n ): void Устанавливает битовое значение на 0 в позиции $n .
/**
* @param int $n Position
*/
public function toggle( int $ n ): void Переключение (обратное) битовое значение в позиции $n .
Возвращает генератор использованных битов.
Пример:
<?php declare (strict_types= 1 );
use Olifanton Boc BitString ;
$ bs = new BitString ( 4 );
$ bs -> writeBit ( 1 );
$ bs -> writeBit ( 0 );
$ bs -> writeBit ( 1 );
$ bs -> writeBit ( 1 );
foreach ( $ bs -> iterate () as $ b ) {
echo ( int ) $ b ;
}
// Prints "1011" /**
* @param int|bool $b
*/
public function writeBit( int | bool $ b ): voidПишет бит и увеличивает внутренний курсор битстро.
/**
* @param array<int | bool> $ba Array of bits
*/
public function writeBitArray( array $ ba ): voidПишет множество битов.
Пример:
<?php declare (strict_types= 1 );
use Olifanton Boc BitString ;
$ bs = new BitString ( 4 );
$ bs -> writeBitArray ([ 1 , false , 0 , true ]);
foreach ( $ bs -> iterate () as $ b ) {
echo ( int ) $ b ;
}
// Prints "1001" /**
* @param int|BrickMathBigInteger $number Unsigned integer
* @param int $bitLength Integer size (8, 16, 32, ...)
*/
public function writeUint( int | BigInteger $ number , int $ bitLength ): voidПишет $ bitlength-bit unsigned integer.
/**
* @param int|BrickMathBigInteger $number Signed integer
* @param int $bitLength Integer size (8, 16, 32, ...)
*/
public function writeInt( int | BigInteger $ number , int $ bitLength ): voidПишет $ bitlength-bit подписанный целое число.
Псевдоним метода writeUint() с предопределенным значением параметров $ bitlength.
/**
* @param ajfTypedArraysUint8Array $ui8 Byte array
*/
public function writeBytes( Uint8Array $ ui8 ): voidНапишите массив без подписных 8-битных целых чисел.
/**
* @param string $value
*/
public function writeString( string $ value ): voidПишет utf-8 String.
/**
* @param int|BrickMathBigInteger $amount
*/
public function writeCoins( int | BigInteger $ amount ): void ;Пишет монеты в нанотронесах. 1 тонна === 1000000000 (10^9) Нанотононисты.
/**
* @param OlifantonUtilsAddress|null $address TON Address
*/
public function writeAddress(? Address $ address ): voidПишет TON Address. См. Реализация адреса в пакете Olifanton/Utils.
/**
* @param OlifantonBocBitString $anotherBitString BitString instance
*/
public function writeBitString( BitString $ anotherBitString ): voidПишет еще один битстроф
Клоны этого битстрии и возвращает новый экземпляр битстронга.
Возвращает шестнадцатеричное представление битстрига.
Возвращает неизменную копию внутреннего UINT8Array.
Возвращает размер битстровов в битах.
OlifantonBocCell Cell - это класс, который реализует концепцию клеток TVM в PHP. Чтобы создать новые и процессовые полученные сообщения из блокчейна, вы будете работать с экземплярами класса ячеек.
Без параметров.
/**
* @param string|Uint8Array $serializedBoc Serialized BoC
* @return Cell[]
*/
public static function fromBoc( string | Uint8Array $ serializedBoc ): arrayСоздает массив ячеек из байтовой массивы или шестнадцатеричной струны.
/**
* @param string|Uint8Array $serializedBoc Serialized BoC
* @param bool $isBase64 Base64-serialized flag, default false
*/
public static function oneFromBoc( string | Uint8Array $ serializedBoc , bool $ isBase64 = false ): CellПринесите одну корневую ячейку из байтовой массивы или шестнадцатеричной строки.
/**
* @param Cell $anotherCell Another cell
* @return Cell This Cell
*/
public function writeCell( Cell $ anotherCell ): selfПишет другую ячейку в эту ячейку и возвращает эту ячейку. Измененный метод.
Возвращает максимальную глубину детских клеток.
Возвращает внутренний экземпляр битстронга для написания и чтения.
Возвращает массивоподобный объект детских клеток.
Возвращает хеш SHA-256 этой ячейки.
Рекурсивно печатает содержание ячейки, как FIFT.
/**
* @param bool $has_idx Default _true_
* @param bool $hash_crc32 Default _true_
* @param bool $has_cache_bits Default _false_
* @param int $flags Default _0_
*/
public function toBoc( bool $ has_idx = true ,
bool $ hash_crc32 = true ,
bool $ has_cache_bits = false ,
int $ flags = 0 ): Uint8ArrayСоздает байтовый массив BOC.
OlifantonBocSlice Slice - это тип срезов ячейки. Клетка может быть преобразована в срез, а затем биты данных и ссылки на другие ячейки из ячейки могут быть получены путем загрузки их из среза.
load% (Loadbit, Loaduint, ...) Методы переместите внутренний курсор среза. Если вы попытаетесь прочитать значение, которое превышает длину свободных битов, будет брошено исключение SliceException .
/**
* @param ajfTypedArraysUint8Array $array
* @param int $length
* @param OlifantonBocSlice[] $refs
*/
public function __construct( Uint8Array $ array , int $ length , array $ refs )Параметры:
$array - UINT8Array от Bitstring Prevation of Cell$length - длина битстрости$refs - Детские клетки срезы Возвращает непрочитанные биты в соответствии с внутренним курсором.
/**
* @param int $n
*/
public function get( int $ n ): bool Возвращает битовую стоимость в позиции $n .
Читает немного и перемещает курсор.
/**
* @param int $bitLength
*/
public function loadBits( int $ bitLength ): Uint8ArrayЧитает бит массив.
/**
* @param int $bitLength
*/
public function loadUint( int $ bitLength ): BigIntegerЧитает без знака целого числа.
/**
* @param int $bitLength
*/
public function loadInt( int $ bitLength ): BigIntegerЧитает подписано целое число.
/**
* @param int $bitLength
*/
public function loadVarUint( int $ bitLength ): BigInteger Читает сумма тонны в нанотонических местах.
Читает адрес.
Читает ломтик детской камеры.
composer run testГрань