TheRPC ile başlarken
API Referansı
Ethereum API
Core API
Kılavuzlar

PHP Tools

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

Dikkat edin!
Merhaba! Dostça bir hatırlatma: bu sayfa size PHP istekleri ile çalışma konusunda sağlam bir genel bakış sunmayı amaçlamaktadır. Uygulamalı kod örnekleri için API Methods documentation bölümümüzü kontrol edin, burada desteklenen tüm dillerde kullanıma hazır örnekler bulacaksınız!

# 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

Daha İyi Olmamıza Yardım Edin!
Bu sayfayı paylaşın ve sizin için daha iyi bir ürün oluşturmamıza yardımcı olun.