安装
通过Composer来管理依赖关系,首先将minimum-stability设置为dev
"minimum-stability": "dev"
然后执行:composer require sc0vu/web3.php dev-master
或者你可以在composer.json中添加这行。"sc0vu/web3.php": "dev-master"
用法实例
use Web3\Web3;
$web3 = new Web3('http://localhost:8545');
接口调用use Web3\Web3;
use Web3\Providers\HttpProvider;
use Web3\RequestManagers\HttpRequestManager;
$web3 = new Web3(new HttpProvider(new HttpRequestManager('http://localhost:8545')));
// timeout
$web3 = new Web3(new HttpProvider(new HttpRequestManager('http://localhost:8545', 0.1)));
使用回调函数调用rpc$web3->clientVersion(function ($err, $version) {
if ($err !== null) {
// do something
return;
}
if (isset($client)) {
echo 'Client version: ' . $version;
}
});
ethuse Web3\Web3;
$web3 = new Web3('http://localhost:8545');
$eth = $web3->eth;
这样也行:use Web3\Eth;
$eth = new Eth('http://localhost:8545');
netuse Web3\Web3;
$web3 = new Web3('http://localhost:8545');
$net = $web3->net;
或者use Web3\Net;
$net = new Net('http://localhost:8545');
batchweb3
$web3->batch(true);
$web3->clientVersion();
$web3->hash('0x1234');
$web3->execute(function ($err, $data) {
if ($err !== null) {
// do something
// it may throw exception or array of exception depends on error type
// connection error: throw exception
// json rpc error: array of exception
return;
}
// do something
});
eth$eth->batch(true);
$eth->protocolVersion();
$eth->syncing();
$eth->provider->execute(function ($err, $data) {
if ($err !== null) {
// do something
return;
}
// do something
});
net$net->batch(true);
$net->version();
$net->listening();
$net->provider->execute(function ($err, $data) {
if ($err !== null) {
// do something
return;
}
// do something
});
personal$personal->batch(true);
$personal->listAccounts();
$personal->newAccount('123456');
$personal->provider->execute(function ($err, $data) {
if ($err !== null) {
// do something
return;
}
// do something
});
智能合约Contractuse Web3\Contract;
$contract = new Contract('http://localhost:8545', $abi);
// deploy contract
$contract->bytecode($bytecode)->new($params, $callback);
// call contract function
$contract->at($contractAddress)->call($functionName, $params, $callback);
// change function state
$contract->at($contractAddress)->send($functionName, $params, $callback);
// estimate deploy contract gas
$contract->bytecode($bytecode)->estimateGas($params, $callback);
// estimate function gas
$contract->at($contractAddress)->estimateGas($functionName, $params, $callback);
// get constructor data
$constructorData = $contract->bytecode($bytecode)->getData($params);
// get function data
$functionData = $contract->at($contractAddress)->getData($functionName, $params);
将值分配给外部域(从回调域到域外)由于和ja
$newAccount = '';
$web3->personal->newAccount('123456', function ($err, $account) use (&$newAccount) {
if ($err !== null) {
echo 'Error: ' . $err->getMessage();
return;
}
$newAccount = $account;
echo 'New account: ' . $account . PHP_EOL;
});
教程链接:http://xc.hubwiz.com/course/5b36629bc02e6b6a59171de3?affid=tp7878教程讲解使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
原文链接:http://blog.hubwiz.com/2018/07/18/ethereum-php-web3/
最佳答案
