olifanton/interop 。 PHP港口tonweb-boc JS库
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是TVM细胞PHP表示的核心。 BitString是用于存储二进制数据的内存优化的。在内部,Bitstring使用ajf/typed-arrays软件包提供的Uint8Array的实现,并用作在Olifanton库之间传输二进制数据的基本类型。
Bottring实例是用严格固定的长度创建的。 write% (writebit,writeUint,...)方法移动内部光标。如果您尝试编写超过自由位长度的值,则将抛出BitStringException异常。
/**
* @param int $length
*/
public function __construct( int $ length )参数:
$length - uint8array的长度。 TVM单元格的默认值: 1023 (文档) 返回未使用的位长度长度。
返回使用的位长度长度。
返回使用Bytes的bittring长度。
/**
* @param int $n Position
*/
public function get( int $ n ): bool在$n位置返回一些位值。
/**
* @param int $n Position
*/
public function on( int $ n ): void将位值设置为位置$n 1。
/**
* @param int $n Position
*/
public function off( int $ n ): void在位置$n时将位值设置为0。
/**
* @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未签名整数。
/**
* @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()方法的别名。
/**
* @param ajfTypedArraysUint8Array $ui8 Byte array
*/
public function writeBytes( Uint8Array $ ui8 ): void编写未签名的8位整数的数组。
/**
* @param string $value
*/
public function writeString( string $ value ): void写UTF-8字符串。
/**
* @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写吨地址。请参阅Olifanton/Utils软件包中的地址实现。
/**
* @param OlifantonBocBitString $anotherBitString BitString instance
*/
public function writeBitString( BitString $ anotherBitString ): void将另一个bittrtring写成这个bottring。
克隆这个bottring并返回新的bittring实例。
返回Bitstring的十六进制字符串表示。
返回内部Uint8array的不变副本。
返回位的大小。
OlifantonBocCell Cell是在PHP中实现TVM细胞概念的类。为了从区块链创建新的和过程接收的消息,您将使用单元格类的实例。
没有参数。
/**
* @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将另一个单元格写给该单元格,然后返回该单元格。可变方法。
返回儿童细胞的最大深度。
返回内部bittring实例进行写作和阅读。
返回儿童细胞类似阵列的对象。
返回该单元的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 - 来自单元格的bitstring代表的uint8array$length - bottring长度$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麻省理工学院