PHPackages                             youziyouzishu/web3.php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. youziyouzishu/web3.php

ActiveLibrary[API Development](/categories/api)

youziyouzishu/web3.php
======================

Ethereum web3 interface.

04PHP

Since Jun 10Pushed 11mo agoCompare

[ Source](https://github.com/youziyouzishu/web3.php)[ Packagist](https://packagist.org/packages/youziyouzishu/web3.php)[ RSS](/packages/youziyouzishu-web3php/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

web3.php
========

[](#web3php)

[![PHP](https://github.com/web3p/web3.php/actions/workflows/php.yml/badge.svg)](https://github.com/web3p/web3.php/actions/workflows/php.yml)[![Build Status](https://camo.githubusercontent.com/45c831b5eaaf5e06277c07f9b9795ac9cf4e14bb67347a5f99785a1423ce55c5/68747470733a2f2f7472617669732d63692e6f72672f77656233702f776562332e7068702e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/web3p/web3.php)[![codecov](https://camo.githubusercontent.com/0fb4812eb00b9eff2c8c4568be287c32a6daff7020e0aad44f4de1255ee1c0ee/68747470733a2f2f636f6465636f762e696f2f67682f77656233702f776562332e7068702f6272616e63682f6d61737465722f67726170682f62616467652e737667)](https://codecov.io/gh/web3p/web3.php)[![Join the chat at https://gitter.im/web3-php/web3.php](https://camo.githubusercontent.com/4b8417cc6318d32b8268f39a1dc8c8f9099e1b7ff1258aa4ed44ba1459056553/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6769747465722d6a6f696e253230636861742d627269676874677265656e2e737667)](https://gitter.im/web3-php/web3.php)[![Licensed under the MIT License](https://camo.githubusercontent.com/08cef40a9105b6526ca22088bc514fbfdbc9aac1ddbf8d4e6c750e3a88a44dca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667)](https://github.com/web3p/web3.php/blob/master/LICENSE)

A php interface for interacting with the Ethereum blockchain and ecosystem.

Install
=======

[](#install)

Set minimum stability to dev

```
"minimum-stability": "dev"

```

Then

```
composer require web3p/web3.php dev-master

```

Or you can add this line in composer.json

```
"web3p/web3.php": "dev-master"

```

Usage
=====

[](#usage)

### New instance

[](#new-instance)

```
use Web3\Web3;

$web3 = new Web3('http://localhost:8545');
```

### Using provider

[](#using-provider)

```
use Web3\Web3;
use Web3\Providers\HttpProvider;

$web3 = new Web3(new HttpProvider('http://localhost:8545'));

// timeout
$web3 = new Web3(new HttpProvider('http://localhost:8545', 0.1));
```

### You can use callback to each rpc call:

[](#you-can-use-callback-to-each-rpc-call)

```
$web3->clientVersion(function ($err, $version) {
    if ($err !== null) {
        // do something
        return;
    }
    if (isset($version)) {
        echo 'Client version: ' . $version;
    }
});
```

### Async

[](#async)

```
use Web3\Web3;
use Web3\Providers\HttpAsyncProvider;

$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) {
    // do somthing
});
Async\await($promise);
```

### Websocket

[](#websocket)

```
use Web3\Web3;
use Web3\Providers\WsProvider;

$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) {
    // do somthing
});
Async\await($promise);

// close connection
$web3->provider->close();
```

### Eth

[](#eth)

```
use Web3\Web3;

$web3 = new Web3('http://localhost:8545');
$eth = $web3->eth;
```

Or

```
use Web3\Eth;

$eth = new Eth('http://localhost:8545');
```

### Net

[](#net)

```
use Web3\Web3;

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

Or

```
use Web3\Net;

$net = new Net('http://localhost:8545');
```

### Batch

[](#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

[](#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);
```

Assign value to outside scope(from callback scope to outside scope)
===================================================================

[](#assign-value-to-outside-scopefrom-callback-scope-to-outside-scope)

Due to callback is not like javascript callback, if we need to assign value to outside scope, we need to assign reference to callback.

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

Examples
========

[](#examples)

To run examples, you need to run ethereum blockchain local (testrpc).

If you are using docker as development machain, you can try [ethdock](https://github.com/sc0vu/ethdock) to run local ethereum blockchain, just simply run `docker-compose up -d testrpc` and expose the `8545` port.

Develop
=======

[](#develop)

### Local php cli installed

[](#local-php-cli-installed)

1. Clone the repo and install packages.

```
git clone https://github.com/web3p/web3.php.git && cd web3.php && composer install

```

2. Run test script.

```
vendor/bin/phpunit

```

### Docker container

[](#docker-container)

1. Clone the repo and run docker container.

```
git clone https://github.com/web3p/web3.php.git

```

2. Copy web3.php to web3.php/docker/app directory and start container.

```
cp files docker/app && docker-compose up -d php ganache

```

3. Enter php container and install packages.

```
docker-compose exec php ash

```

4. Change testHost in `TestCase.php`

```
/**
 * testHost
 *
 * @var string
 */
protected $testHost = 'http://ganache:8545';

```

5. Run test script

```
vendor/bin/phpunit

```

###### Install packages

[](#install-packages)

Enter container first

```
docker-compose exec php ash

```

1. gmp

```
apk add gmp-dev
docker-php-ext-install gmp

```

2. bcmath

```
docker-php-ext-install bcmath

```

###### Remove extension

[](#remove-extension)

Move the extension config from `/usr/local/etc/php/conf.d/`

```
mv /usr/local/etc/php/conf.d/extension-config-name to/directory

```

API
===

[](#api)

Todo.

Contribution
============

[](#contribution)

Thank you to all the people who already contributed to web3.php! [![](https://camo.githubusercontent.com/defe6a1fe907946b9490f595267a37409cf88f72f1eea25da12408d57d708351/68747470733a2f2f636f6e747269622e726f636b732f696d6167653f7265706f3d77656233702f776562332e706870)](https://github.com/web3p/web3.php/graphs/contributors)

License
=======

[](#license)

MIT

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance40

Moderate activity, may be stable

Popularity3

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

 Bus Factor1

Top contributor holds 93.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/babec30ca4b0a45342b765e624f5b4bbdb57354cad246d125368ed77d1c5614f?d=identicon)[YouZiXiL](/maintainers/YouZiXiL)

---

Top Contributors

[![sc0Vu](https://avatars.githubusercontent.com/u/10494397?v=4)](https://github.com/sc0Vu "sc0Vu (479 commits)")[![miguilimzero](https://avatars.githubusercontent.com/u/35383529?v=4)](https://github.com/miguilimzero "miguilimzero (9 commits)")[![1099511627776](https://avatars.githubusercontent.com/u/2117414?v=4)](https://github.com/1099511627776 "1099511627776 (4 commits)")[![youziyouzishu](https://avatars.githubusercontent.com/u/48539892?v=4)](https://github.com/youziyouzishu "youziyouzishu (4 commits)")[![sinabs](https://avatars.githubusercontent.com/u/1351257?v=4)](https://github.com/sinabs "sinabs (3 commits)")[![Arul-](https://avatars.githubusercontent.com/u/2255137?v=4)](https://github.com/Arul- "Arul- (2 commits)")[![amateescu](https://avatars.githubusercontent.com/u/246655?v=4)](https://github.com/amateescu "amateescu (1 commits)")[![pash7ka](https://avatars.githubusercontent.com/u/2335215?v=4)](https://github.com/pash7ka "pash7ka (1 commits)")[![refear99](https://avatars.githubusercontent.com/u/7454701?v=4)](https://github.com/refear99 "refear99 (1 commits)")[![brokenpieworld](https://avatars.githubusercontent.com/u/24252804?v=4)](https://github.com/brokenpieworld "brokenpieworld (1 commits)")[![sciku1](https://avatars.githubusercontent.com/u/11371543?v=4)](https://github.com/sciku1 "sciku1 (1 commits)")[![serderovsh](https://avatars.githubusercontent.com/u/24723913?v=4)](https://github.com/serderovsh "serderovsh (1 commits)")[![sunshuzhou](https://avatars.githubusercontent.com/u/2659011?v=4)](https://github.com/sunshuzhou "sunshuzhou (1 commits)")[![a10000005588](https://avatars.githubusercontent.com/u/12505827?v=4)](https://github.com/a10000005588 "a10000005588 (1 commits)")[![lsmelan](https://avatars.githubusercontent.com/u/4654979?v=4)](https://github.com/lsmelan "lsmelan (1 commits)")

### Embed Badge

![Health badge](/badges/youziyouzishu-web3php/health.svg)

```
[![Health](https://phpackages.com/badges/youziyouzishu-web3php/health.svg)](https://phpackages.com/packages/youziyouzishu-web3php)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M475](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M270](/packages/twilio-sdk)[knplabs/github-api

GitHub API v3 client

2.2k15.8M186](/packages/knplabs-github-api)[facebook/php-business-sdk

PHP SDK for Facebook Business

90121.9M33](/packages/facebook-php-business-sdk)[microsoft/microsoft-graph

The Microsoft Graph SDK for PHP

65723.5M95](/packages/microsoft-microsoft-graph)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

73813.7M114](/packages/meilisearch-meilisearch-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
