建议和反馈

请填写你的反馈内容

感谢您对链客的信任!

恭喜您填写完个人简历!链客专注于区块链职位连接,帮助您的投递更加精准高效,赶快去选择自己心仪的岗位吧!

推动中国区块链事业发展始终是我们坚定不移的梦——链客团队

PHP程序员如何利用web3.php进行以太坊开发

链客

2019-03-14

1615

1

撰写答案

请先登陆或注册

14个回答

aa

2019-03-14

php是世界上最好的语言

0
赞赏(0)

仍然

2019-03-14

专业不对口=。=php还能写eth?

0
赞赏(0)

菲菲

2019-03-14

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

0
赞赏(0)

TheKing

2019-03-14

$personal->batch(true); $personal->listAccounts(); $personal->newAccount('123456'); $personal->provider->execute(function ($err, $data) {    if ($err !== null) {        // do something        return;    }    // do something});

0
赞赏(0)

0.0

2019-03-14

不懂-。-

0
赞赏(0)

nunununu

2019-03-14

$net->batch(true); $net->version(); $net->listening(); $net->provider->execute(function ($err, $data) {    if ($err !== null) {        // do something        return;    }    // do something});

0
赞赏(0)

咸鸟.jpg

2019-03-14

eth

$eth->batch(true);
$eth->protocolVersion();
$eth->syncing();

$eth->provider->execute(function ($err, $data) {    if ($err !== null) {        // do something
        return;
    }    // do something});


0
赞赏(0)

shapeofmyheart

2019-03-14

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


0
赞赏(0)

江南烟雨

2019-03-14

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

0
赞赏(0)

江南烟雨

2019-03-14

use Web3\Web3; $web3 = new Web3('http://localhost:8545'); $net = $web3->net;

0
赞赏(0)

波bobo

2019-03-14

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

0
赞赏(0)

Alex

2019-03-14

使用回调函数调用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;


0
赞赏(0)

无非花

2019-03-14

实例

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


0
赞赏(0)

学习技术

2019-03-14

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

安装

通过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;
});


0
赞赏(0)
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励