web3.php
0.3.0
用於與以太坊區塊鏈和生態系統互動的 php 介面。
將最低穩定性設為 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');
use Web3Web3;use Web3ProvidersHttpProvider;$web3 = new Web3(new HttpProvider('http://localhost:8545'));/// 逾時$web3 = new Web3(new HttpProvider('http://localhost:8545', 0.1 ) ));
$web3->clientVersion(function ($err, $version) {if ($err !== null) {// 做某事return; }if (isset($version)) {echo '客戶端版本:' . $版本; } });
use Web3Web3;use Web3ProvidersHttpAsyncProvider;$web3 = new Web3(new HttpAsyncProvider('http://localhost:8545'));// 逾時$web3 = new Web3(new HttpAsyncProvider('http://local:8545. ) ));// wait$promise = $web3->clientVersion(function ($err, $version) {// 做某事});Asyncawait($promise);
use Web3Web3;use Web3ProvidersWsProvider;$web3 = new Web3(new WsProvider('ws://localhost:8545'));// 逾時$web3 = new Web3(new WsProvider('ws://localhost:8545', 0.1 ));// wait$promise = $web3->clientVersion(function ($err, $version) {// 做某事});Asyncawait($promise);// 關閉連線$web3->provider->close ( );
使用 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 錯誤:異常數組return; }//做某事});
以太坊
$eth->batch(true);$eth->protocolVersion();$eth->syncing();$eth->provider->execute(function ($err, $data) {if ($err !== null) {// 做某事return; }//做某事});
網
$net->batch(true);$net->version();$net->listening();$net->provider->execute(function ($err, $data) {if ($err !== null) {// 做某事return; }//做某事});
個人的
$personal->batch(true);$personal->listAccounts();$personal->newAccount('123456');$personal->provider->execute(function ($err, $data) {if ($err !== null) {// 做某事return; }//做某事});
use Web3Contract;$contract = new Contract('http://localhost:8545', $abi);// 部署合約$contract->bytecode($bytecode)->new($params, $callback);// 呼叫合約函數$contract->at($contractAddress)->call($functionName, $params, $callback);//更改函數狀態$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);
由於callback與javascript的callback不同,如果我們需要給外部作用域賦值,我們需要為callback分配引用。
$newAccount = '';$web3->personal->newAccount('123456', function ($err, $account) use (&$newAccount) {if ($err !== null) {echo '錯誤: ' . $err->getMessage();返回; }$newAccount = $account;echo '新帳號:' . $帳戶。 PHP_EOL; });
要運行範例,您需要運行以太坊區塊鏈本地(testrpc)。
如果您使用 docker 作為開發 machain,您可以嘗試使用 ethdock 來運行本地以太坊區塊鏈,只需運行docker-compose up -d testrpc
並公開8545
連接埠即可。
克隆儲存庫並安裝套件。
git clone https://github.com/web3p/web3.php.git && cd web3.php && composer install
運行測試腳本。
vendor/bin/phpunit
克隆儲存庫並運行 docker 容器。
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
更改TestCase.php
中的 testHost
/** * 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
數學數學
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 做出貢獻的人!
麻省理工學院