Git Product home page Git Product logo

webu.php's Introduction

webu.php

Build Status codecov Join the chat at https://gitter.im/webu-php/webu.php Licensed under the MIT License

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

Install

Set minimum stability to dev

"minimum-stability": "dev"

Then

composer require sc0vu/webu.php dev-master

Or you can add this line in composer.json

"sc0vu/webu.php": "dev-master"

Usage

New instance

use Webu\Webu;

$webu = new Webu('http://localhost:8545');

Using provider

use Webu\Webu;
use Webu\Providers\HttpProvider;
use Webu\RequestManagers\HttpRequestManager;

$webu = new Webu(new HttpProvider(new HttpRequestManager('http://localhost:8545')));

// timeout
$webu = new Webu(new HttpProvider(new HttpRequestManager('http://localhost:8545', 0.1)));

You can use callback to each rpc call:

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

Irc

use Webu\Webu;

$webu = new Webu('http://localhost:8545');
$irc = $webu->irc;

Or

use Webu\Irc;

$irc = new Irc('http://localhost:8545');

Net

use Webu\Webu;

$webu = new Webu('http://localhost:8545');
$net = $webu->net;

Or

use Webu\Net;

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

Batch

webu

$webu->batch(true);
$webu->clientVersion();
$webu->hash('0x1234');
$webu->execute(function ($err, $data) {
    if ($err !== null) {
        // do somhucing
        // it may throw exception or array of exception depends on error type
        // connection error: throw exception
        // json rpc error: array of exception
        return;
    }
    // do somhucing
});

irc

$irc->batch(true);
$irc->protocolVersion();
$irc->syncing();

$irc->provider->execute(function ($err, $data) {
    if ($err !== null) {
        // do somhucing
        return;
    }
    // do somhucing
});

net

$net->batch(true);
$net->version();
$net->listening();

$net->provider->execute(function ($err, $data) {
    if ($err !== null) {
        // do somhucing
        return;
    }
    // do somhucing
});

personal

$personal->batch(true);
$personal->listAccounts();
$personal->newAccount('123456');

$personal->provider->execute(function ($err, $data) {
    if ($err !== null) {
        // do somhucing
        return;
    }
    // do somhucing
});

Contract

use Webu\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)

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 = '';

$webu->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

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

If you are using docker as development machain, you can try ircdock to run local HappyUC blockchain, just simply run docker-compose up -d testrpc and expose the 8545 port.

Develop

Local php cli installed

  1. Clone the repo and install packages.
git clone https://github.com/happyuc-project/webu.php.git && cd webu.php && composer install
  1. Run test script.
vendor/bin/phpunit

Docker container

  1. Clone the repo and run docker container.
git clone https://github.com/happyuc-project/webu.php.git
  1. Copy webu.php to webu.php/docker/app directory and start container.
cp files docker/app && docker-compose up -d php
  1. Enter php container and install packages.
docker-compose exec php ash
  1. Run test script
vendor/bin/phpunit

API

Todo.

License

MIT

webu.php's People

Contributors

dreamxyp avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.