Antarmuka php untuk berinteraksi dengan blockchain dan ekosistem Ethereum.
Tetapkan stabilitas minimum ke dev
"minimum-stability": "dev"
Kemudian
composer require web3p/web3.php dev-master
Atau Anda dapat menambahkan baris ini di composer.json
"web3p/web3.php": "dev-master"
gunakan Web3Web3;$web3 = Web3 baru('http://localhost:8545');
gunakan Web3Web3;gunakan Web3ProvidersHttpProvider;$web3 = Web3 baru(HttpProvider baru('http://localhost:8545'));// timeout$web3 = Web3 baru(HttpProvider baru('http://localhost:8545', 0,1 ));
$web3->clientVersion(function ($err, $version) {if ($err !== null) {// melakukan sesuatureturn; }if (isset($version)) {echo 'Versi klien: ' . $versi; } });
gunakan Web3Web3;gunakan Web3ProvidersHttpAsyncProvider;$web3 = Web3 baru(HttpAsyncProvider baru('http://localhost:8545'));// timeout$web3 = Web3 baru(HttpAsyncProvider baru('http://localhost:8545', 0,1 ));// menunggu$janji = $web3->clientVersion(function ($err, $version) {// melakukan sesuatu});Asyncawait($promise);
gunakan Web3Web3;gunakan Web3ProvidersWsProvider;$web3 = Web3 baru(WsProvider baru('ws://localhost:8545'));// timeout$web3 = Web3 baru(WsProvider baru('ws://localhost:8545', 0,1 ));// menunggu$janji = $web3->clientVersion(fungsi ($err, $versi) {// lakukan sesuatu});Asyncawait($promise);// tutup koneksi$web3->penyedia->close();
gunakan Web3Web3;$web3 = Web3 baru('http://localhost:8545');$eth = $web3->eth;
Atau
gunakan Web3Eth;$eth = new Eth('http://localhost:8545');
gunakan Web3Web3;$web3 = Web3 baru('http://localhost:8545');$net = $web3->net;
Atau
gunakan Web3Net;$net = Net baru('http://localhost:8545');
web3
$web3->batch(true);$web3->clientVersion();$web3->hash('0x1234');$web3->execute(function ($err, $data) {if ($err !== null) {// melakukan sesuatu // mungkin memunculkan pengecualian atau susunan pengecualian tergantung pada jenis kesalahan // kesalahan koneksi: pengecualian lempar // json rpc error: array pengecualian kembali; }// melakukan sesuatu});
et
$eth->batch(true);$eth->protocolVersion();$eth->syncing();$eth->provider->execute(function ($err, $data) {if ($err !== null) {// melakukan sesuatu kembali; }// melakukan sesuatu});
bersih
$net->batch(true);$net->version();$net->listening();$net->provider->execute(function ($err, $data) {if ($err !== null) {// melakukan sesuatu kembali; }// melakukan sesuatu});
pribadi
$personal->batch(true);$personal->listAccounts();$personal->newAccount('123456');$personal->provider->execute(function ($err, $data) {if ($err !== null) {// lakukan sesuatukembali; }// melakukan sesuatu});
gunakan Web3Contract;$contract = new Contract('http://localhost:8545', $abi);// terapkan contract$contract->bytecode($bytecode)->new($params, $callback);// panggilan fungsi kontrak$kontrak->at($contractAddress)->call($functionName, $params, $callback);// mengubah status fungsi$contract->at($contractAddress)->send($functionName, $params, $callback);// perkiraan penerapan gas kontrak$kontrak->bytecode($bytecode)->estimateGas($params, $callback);// perkiraan fungsi gas$kontrak->at($contractAddress)->estimateGas ($functionName, $params, $callback);// dapatkan data konstruktor$constructorData = $contract->bytecode($bytecode)->getData($params);// dapatkan fungsi data$functionData = $kontrak->di($contractAddress)->getData($functionName, $params);
Karena callback tidak seperti callback javascript, jika kita perlu memberikan nilai ke luar lingkup, kita perlu menetapkan referensi ke callback.
$newAccount = '';$web3->personal->newAccount('123456', function ($err, $account) use (&$newAccount) {if ($err !== null) {echo 'Error: ' . $err->getMessage();kembali; }$newAccount = $account;echo 'Akun baru: ' . $akun . PHP_EOL; });
Untuk menjalankan contoh, Anda perlu menjalankan ethereum blockchain local (testrpc).
Jika Anda menggunakan buruh pelabuhan sebagai mesin pengembangan, Anda dapat mencoba ethdock untuk menjalankan blockchain ethereum lokal, cukup jalankan docker-compose up -d testrpc
dan buka port 8545
.
Kloning repo dan instal paket.
git clone https://github.com/web3p/web3.php.git && cd web3.php && composer install
Jalankan skrip pengujian.
vendor/bin/phpunit
Kloning repo dan jalankan wadah buruh pelabuhan.
git clone https://github.com/web3p/web3.php.git
Salin web3.php ke direktori web3.php/docker/app dan mulai container.
cp files docker/app && docker-compose up -d php ganache
Masukkan wadah php dan instal paket.
docker-compose exec php ash
Ubah testHost di TestCase.php
/** * testHost * * @var string */ protected $testHost = 'http://ganache:8545';
Jalankan skrip pengujian
vendor/bin/phpunit
Masukkan wadah terlebih dahulu
docker-compose exec php ash
gmp
apk add gmp-dev docker-php-ext-install gmp
bcmath
docker-php-ext-install bcmath
Pindahkan konfigurasi ekstensi dari /usr/local/etc/php/conf.d/
mv /usr/local/etc/php/conf.d/extension-config-name to/directory
Semua yang harus dilakukan.
Terima kasih kepada semua orang yang telah berkontribusi pada web3.php!
MIT