安装
通过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;
- }
- });
- eth
- use Web3\Web3;
- $web3 = new Web3('http://localhost:8545');
- $eth = $web3->eth;
- 这样也行:
- use Web3\Eth;
- $eth = new Eth('http://localhost:8545');
- net
- use Web3\Web3;
- $web3 = new Web3('http://localhost:8545');
- $net = $web3->net;
- 或者
- use Web3\Net;
- $net = new Net('http://localhost:8545');
- batch
- web3
- $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
- });
- 智能合约Contract
- use 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);
- 将值分配给外部域(从回调域到域外)
- 由于和JavaScript回调不同,如果需要将值赋值到域外,我们需要给回调赋值。
- $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;
- });
php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。