php区块链开发游戏,php开发以太坊区块链应用

web3.php是一个PHP接口,主要用于与以太坊区块链及其生态系统进行交互.

安装

通过Composer来管理依赖关系,首先将minimum-stability设置为dev

1

"minimum-stability": "dev"

然后执行:

1

composer require sc0vu/web3.php dev-master

或者你可以在composer.json中添加这行。

1

"sc0vu/web3.php": "dev-master"

用法

实例

1

2

3

use Web3\Web3;

$web3 = new Web3('http://localhost:8545');

接口调用

1

2

3

4

5

6

7

8

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

1

2

3

4

5

6

7

8

9

$web3->clientVersion(function ($err, $version) {

if ($err !== null) {

// do something

return;

}

if (isset($client)) {

echo 'Client version: ' . $version;

}

});

eth

1

2

3

4

use Web3\Web3;

$web3 = new Web3('http://localhost:8545');

$eth = $web3->eth;

这样也行:

1

2

3

use Web3\Eth;

$eth = new Eth('http://localhost:8545');

net

1

2

3

4

use Web3\Web3;

$web3 = new Web3('http://localhost:8545');

$net = $web3->net;

或者

1

2

3

use Web3\Net;

$net = new Net('http://localhost:8545');

batch

web3

1

2

3

4

5

6

7

8

9

10

11

12

13

$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

1

2

3

4

5

6

7

8

9

10

11

$eth->batch(true);

$eth->protocolVersion();

$eth->syncing();

$eth->provider->execute(function ($err, $data) {

if ($err !== null) {

// do something

return;

}

// do something

});

net

1

2

3

4

5

6

7

8

9

10

11

$net->batch(true);

$net->version();

$net->listening();

$net->provider->execute(function ($err, $data) {

if ($err !== null) {

// do something

return;

}

// do something

});

personal

1

2

3

4

5

6

7

8

9

10

11

$personal->batch(true);

$personal->listAccounts();

$personal->newAccount('123456');

$personal->provider->execute(function ($err, $data) {

if ($err !== null) {

// do something

return;

}

// do something

});

智能合约Contract

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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);

将值分配给外部域(从回调域到域外)

1

2

3

4

5

6

7

8

9

10

11

12

由于和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程序员学习以太坊的需求,我们提供很受欢迎的互动教程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值