อินเทอร์เฟซ php สำหรับการโต้ตอบกับ Ethereum blockchain และระบบนิเวศ
ตั้งค่าความเสถียรขั้นต่ำเป็น dev
"minimum-stability": "dev"
แล้ว
composer require web3p/web3.php dev-master
หรือคุณสามารถเพิ่มบรรทัดนี้ใน composer.json
"web3p/web3.php": "dev-master"
ใช้ Web3Web3;$web3 = new Web3('http://localhost:8545');
ใช้ Web3Web3;ใช้ Web3ProvidersHttpProvider;$web3 = new Web3(new HttpProvider('http://localhost:8545'));// timeout$web3 = new Web3(new HttpProvider('http://localhost:8545', 0.1 ));
$web3->clientVersion(function ($err, $version) {if ($err !== null) {// ทำบางอย่างส่งคืน; }if (isset($version)) {echo 'เวอร์ชันไคลเอนต์: ' $รุ่น; - -
ใช้ Web3Web3; ใช้ Web3ProvidersHttpAsyncProvider; $web3 = Web3 ใหม่ (ใหม่ HttpAsyncProvider ('http://localhost:8545')); // หมดเวลา $ web3 = Web3 ใหม่ (ใหม่ HttpAsyncProvider ('http://localhost:8545', 0.1 ));// await$promise = $web3->clientVersion(function ($err, $version) {// ทำบางสิ่งบางอย่าง});Asyncawait($สัญญา);
ใช้ Web3Web3; ใช้ Web3ProvidersWsProvider; $web3 = Web3 ใหม่ (WsProvider ใหม่ ('ws://localhost:8545')); // หมดเวลา$web3 = Web3 ใหม่ (WsProvider ใหม่ ('ws://localhost:8545', 0.1 ));// await$promise = $web3->clientVersion(function ($err, $version) {// ทำ somthing});Asyncawait($สัญญา);// ปิดการเชื่อมต่อ$web3->ผู้ให้บริการ->ปิด();
ใช้ Web3Web3;$web3 = new Web3('http://localhost:8545');$eth = $web3->eth;
หรือ
ใช้ Web3Eth;$eth = new Eth('http://localhost:8545');
ใช้ Web3Web3;$web3 = new Web3('http://localhost:8545');$net = $web3->net;
หรือ
ใช้ Web3Net;$net = new Net('http://localhost:8545');
เว็บ3
$web3->batch(true);$web3->clientVersion();$web3->hash('0x1234');$web3->execute(function ($err, $data) {if ($err !== null) {// ทำบางสิ่งบางอย่าง// อาจทำให้เกิดข้อยกเว้นหรืออาร์เรย์ของข้อยกเว้น ขึ้นอยู่กับประเภทข้อผิดพลาด// ข้อผิดพลาดในการเชื่อมต่อ: โยนข้อยกเว้น// ข้อผิดพลาด json rpc: อาร์เรย์ของข้อยกเว้นที่ส่งคืน; }// ทำอะไรสักอย่าง});
ผลประโยชน์ทับซ้อน
$eth->batch(true);$eth->protocolVersion();$eth->syncing();$eth->provider->execute(function ($err, $data) {if ($err !== null) {// ทำบางสิ่งบางอย่างกลับมา; }// ทำอะไรสักอย่าง});
สุทธิ
$net->batch(true);$net->version();$net->listening();$net->provider->execute(function ($err, $data) {if ($err !== null) {// ทำบางสิ่งบางอย่างกลับมา; }// ทำอะไรสักอย่าง});
ส่วนตัว
$personal->batch(true);$personal->listAccounts();$personal->newAccount('123456');$personal->provider->execute(function ($err, $data) {if ($err !== null) {// ทำบางสิ่งบางอย่างส่งคืน; }// ทำอะไรสักอย่าง});
ใช้ Web3Contract;$contract = new Contract('http://localhost:8545', $abi);// ปรับใช้สัญญา$contract->bytecode($bytecode)->new($params, $callback);// โทร ฟังก์ชั่นสัญญา$contract->at($contractAddress)->call($functionName, $params, $callback);// เปลี่ยนฟังก์ชัน state$contract->at($contractAddress)->send($functionName, $params, $callback);// ประมาณการปรับใช้สัญญา gas$contract->bytecode($bytecode)->estimateGas($params, $callback); // ประมาณการฟังก์ชัน gas$contract->at($contractAddress)->estimateGas($functionName, $params, $callback);// รับข้อมูลคอนสตรัคเตอร์$constructorData = $contract->bytecode($bytecode)->getData($params);// รับข้อมูลฟังก์ชัน$functionData = $contract->at($contractAddress)->getData($functionName, $params);
เนื่องจากการโทรกลับไม่เหมือนกับการโทรกลับด้วย JavaScript หากเราต้องกำหนดค่าให้กับขอบเขตภายนอก เราจึงต้องกำหนดการอ้างอิงให้กับการโทรกลับ
$newAccount = '';$web3->personal->newAccount('123456', function ($err, $account) use (&$newAccount) {if ($err !== null) {echo 'Error: ' . $err->getMessage();กลับมา; }$newAccount = $account;echo 'บัญชีใหม่: ' บัญชี $. PHP_EOL; -
หากต้องการเรียกใช้ตัวอย่าง คุณจะต้องเรียกใช้ ethereum blockchain local (testrpc)
หากคุณใช้ docker เป็น development machain คุณสามารถลองใช้ ethdock เพื่อรัน ethereum blockchain ในเครื่อง เพียงแค่รัน docker-compose up -d testrpc
และเปิดเผยพอร์ต 8545
โคลน repo และติดตั้งแพ็คเกจ
git clone https://github.com/web3p/web3.php.git && cd web3.php && composer install
เรียกใช้สคริปต์ทดสอบ
vendor/bin/phpunit
โคลน repo และรันคอนเทนเนอร์นักเทียบท่า
git clone https://github.com/web3p/web3.php.git
คัดลอก web3.php ไปยังไดเร็กทอรี web3.php/docker/app และเริ่มคอนเทนเนอร์
cp files docker/app && docker-compose up -d php ganache
ป้อนคอนเทนเนอร์ php และติดตั้งแพ็คเกจ
docker-compose exec php ash
เปลี่ยน testHost ใน TestCase.php
/** * testHost * * @var string */ protected $testHost = 'http://ganache:8545';
เรียกใช้สคริปต์ทดสอบ
vendor/bin/phpunit
ใส่ภาชนะก่อน
docker-compose exec php ash
จีเอ็มพี
apk add gmp-dev docker-php-ext-install gmp
bcmath
docker-php-ext-install bcmath
ย้ายการกำหนดค่าส่วนขยายจาก /usr/local/etc/php/conf.d/
mv /usr/local/etc/php/conf.d/extension-config-name to/directory
สิ่งที่ต้องทำ
ขอขอบคุณทุกท่านที่ร่วมสนับสนุน web3.php!
เอ็มไอที