olifanton/interop بدلاً من ذلك. PHP Port of 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 ويتم استخدامه كنوع أساسي لنقل البيانات الثنائية بين أجزاء من مكتبات Olifanton.
يتم إنشاء مثيل bitstring بطول ثابت بدقة. write% (الكتابة ، كتابة الأساليب ...) تحرك المؤشر الداخلي. إذا حاولت كتابة قيمة تتجاوز طول البتات المجانية ، فسيتم طرح استثناء BitStringException .
/**
* @param int $length
*/
public function __construct( int $ length )حدود:
$length - طول uint8array. القيمة الافتراضية لخلية TVM: 1023 (الوثائق) إرجاع البتات غير المستخدمة طول bitstring.
إرجاع البتات المستخدمة طول bitstring.
إرجاع البايتات المستخدمة طول bitstring.
/**
* @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يكتب بت وزيادة المؤشر الداخلي bitstring.
/**
* @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() مع قيمة معلمة bitLength $ المحددة مسبقًا.
/**
* @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 ;يكتب العملات المعدنية في nanotoncoins. 1 طن === 1000000000 (10^9) nanotoncoins.
/**
* @param OlifantonUtilsAddress|null $address TON Address
*/
public function writeAddress(? Address $ address ): voidيكتب عنوان TON. انظر تنفيذ العنوان في حزمة Olifanton/Utils.
/**
* @param OlifantonBocBitString $anotherBitString BitString instance
*/
public function writeBitString( BitString $ anotherBitString ): voidيكتب bitstring آخر لهذا bitstring.
استنساخ هذا bitstring ويعيد مثيل bitstring جديد.
إرجاع hex سلسلة تمثيل bitstring.
إرجاع نسخة ثابتة من uint8array الداخلية.
إرجاع حجم bitstring في أجزاء.
OlifantonBocCell Cell هي فئة تنفذ مفهوم خلايا TVM في PHP. لإنشاء رسائل جديدة ومعالجة من blockchain ، ستعمل مع مثيلات من فئة الخلية.
بدون معلمات.
/**
* @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يكتب خلية أخرى لهذه الخلية ويعيد هذه الخلية. طريقة قابلة للتغيير.
إرجاع عمق كحد أقصى للخلايا الفرعية.
إرجاع مثيل Bitstring الداخلي للكتابة والقراءة.
إرجاع كائن يشبه المصفوفة من خلايا الأطفال.
يعود تجزئة 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 للخلية$length - طول bitstring$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 يقرأ مبلغ طن في nanotoncoins.
يقرأ العنوان.
يقرأ شريحة من خلايا الأطفال.
composer run testمعهد ماساتشوستس للتكنولوجيا