web3.php
0.3.0
Ethereum ブロックチェーンおよびエコシステムと対話するための php インターフェイス。
最小安定性を開発に設定します
"minimum-stability": "dev"
それから
composer require web3p/web3.php dev-master
または、composer.json にこの行を追加することもできます
"web3p/web3.php": "dev-master"
Web3Web3 を使用します;$web3 = 新しい Web3('http://localhost:8545');
Web3Web3 を使用;Web3ProvidersHttpProvider を使用;$web3 = new Web3(new HttpProvider('http://localhost:8545'));// timeout$web3 = new Web3(new HttpProvider('http://localhost:8545', 0.1) ));
$web3->clientVersion(function ($err, $version) {if ($err !== null) {// 何かを行うreturn; }if (isset($version)) {echo 'クライアントのバージョン: ' . $バージョン; } });
Web3Web3 を使用;Web3ProvidersHttpAsyncProvider を使用;$web3 = new Web3(new HttpAsyncProvider('http://localhost:8545'));// timeout$web3 = new Web3(new HttpAsyncProvider('http://localhost:8545', 0.1) ));// await$promise = $web3->clientVersion(function ($err, $version) {// 何かをします});Asyncawait($promise);
Web3Web3 を使用;Web3ProvidersWsProvider を使用;$web3 = new Web3(new WsProvider('ws://localhost:8545'));// timeout$web3 = new Web3(new WsProvider('ws://localhost:8545', 0.1) ));// await$promise = $web3->clientVersion(function ($err, $version) {// 何かをする});Asyncawait($promise);// 接続を閉じる$web3->provider->close();
Web3Web3 を使用します;$web3 = 新しい Web3('http://localhost:8545');$eth = $web3->eth;
または
Web3Eth を使用;$eth = new Eth('http://localhost:8545');
Web3Web3 を使用します;$web3 = 新しい 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);// call Contract function$contract->at($contractAddress)->call($functionName, $params, $callback);// 関数を変更state$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);
コールバックは JavaScript のコールバックとは異なるため、スコープ外に値を割り当てる必要がある場合は、コールバックへの参照を割り当てる必要があります。
$newAccount = '';$web3->personal->newAccount('123456', function ($err, $account) use (&$newAccount) {if ($err !== null) {echo 'エラー: ' 。 $err->getMessage();return; }$newAccount = $account;echo '新しいアカウント: ' 。 $アカウント 。 PHP_EOL; });
サンプルを実行するには、イーサリアム ブロックチェーン ローカル (testrpc) を実行する必要があります。
開発マチェーンとして docker を使用している場合は、ローカルのイーサリアム ブロックチェーンを実行するために 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
GMP
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 に貢献してくださったすべての方々に感謝します。
マサチューセッツ工科大学