TheRPCを始める
APIリファレンス
イーサリアムAPI
Core API
ガイド

PHP Tools

PHP developers can use Web3.php library for Ethereum development, enabling integration with web applications.

ご注意ください!
こんにちは!友好的な注意点:このページは、 PHP リクエストの操作に関する確かな概要を提供することを目的としています。実践的なコード例については、 API Methods documentation をチェックしてください。そこにはすべてのサポートされている言語ですぐに使用できる例があります!

# Web3.php

PHP interface for interacting with Ethereum nodes.

<?php

use Web3\Web3;
use Web3\Providers\HttpProvider;
use Web3\RequestManagers\HttpRequestManager;

class EthereumService
{
    private $web3;

    public function __construct(string $nodeUrl)
    {
        $this->web3 = new Web3(new HttpProvider(new HttpRequestManager($nodeUrl)));
    }

    public function getBalance(string $address): string
    {
        $balance = null;
        $this->web3->eth->getBalance($address, 'latest', function ($err, $result) use (&$balance) {
            if ($err !== null) {
                throw new Exception($err->getMessage());
            }
            $balance = $result;
        });

        return $this->web3->utils->fromWei($balance, 'ether');
    }

    public function sendTransaction(array $transaction): string
    {
        $hash = null;
        $this->web3->eth->sendTransaction($transaction, function ($err, $result) use (&$hash) {
            if ($err !== null) {
                throw new Exception($err->getMessage());
            }
            $hash = $result;
        });

        return $hash;
    }
}
  • GitHub: web3.php
  • Packagist: web3.php package
  • Features:
    • JSON-RPC support
    • Contract interactions
    • Transaction handling
    • ETH unit conversion
    • ABI encoding/decoding

# Laravel Integration

Example of Laravel integration:

<?php

namespace App\Services;

use Web3\Web3;
use Illuminate\Support\Facades\Cache;

class EthereumService
{
    private $web3;

    public function __construct()
    {
        $this->web3 = new Web3(config('services.ethereum.node_url'));
    }

    public function getCachedBalance(string $address): string
    {
        return Cache::remember("eth_balance_{$address}", 300, function () use ($address) {
            return $this->getBalance($address);
        });
    }

    public function getTransactionCount(string $address): int
    {
        $count = null;
        $this->web3->eth->getTransactionCount($address, 'latest', function ($err, $result) use (&$count) {
            if ($err !== null) {
                throw new Exception($err->getMessage());
            }
            $count = hexdec($result);
        });

        return $count;
    }
}

# Smart Contract Integration

Working with smart contracts in PHP:

<?php

use Web3\Contract;

class SmartContractService
{
    private $contract;

    public function __construct(string $nodeUrl, string $abi, string $contractAddress)
    {
        $web3 = new Web3(new HttpProvider(new HttpRequestManager($nodeUrl)));
        $this->contract = new Contract($web3->provider, $abi);
        $this->contract->at($contractAddress);
    }

    public function callMethod(string $method, array $params = [])
    {
        $result = null;
        $this->contract->call($method, $params, function ($err, $response) use (&$result) {
            if ($err !== null) {
                throw new Exception($err->getMessage());
            }
            $result = $response;
        });

        return $result;
    }
}

# Error Handling

Proper error handling in PHP:

<?php

class EthereumException extends Exception
{
    private $ethError;

    public function __construct(string $message, $ethError = null)
    {
        parent::__construct($message);
        $this->ethError = $ethError;
    }

    public function getEthError()
    {
        return $this->ethError;
    }
}

class SafeEthereumService
{
    public function safeGetBalance(string $address): string
    {
        try {
            return $this->getBalance($address);
        } catch (Exception $e) {
            throw new EthereumException(
                "Failed to get balance for address: {$address}",
                $e
            );
        }
    }
}

See also

より良くするためにご協力ください!
このページを共有して、より良い製品を作るのに協力してください。