web3.php
0.3.0
Ethereum 블록체인 및 생태계와 상호 작용하기 위한 PHP 인터페이스입니다.
최소 안정성을 dev로 설정
"minimum-stability": "dev"
그 다음에
composer require web3p/web3.php dev-master
또는 작곡가.json에 이 줄을 추가할 수 있습니다.
"web3p/web3.php": "dev-master"
Web3Web3;$web3 = new Web3('http://localhost:8545') 사용;
Web3Web3 사용;Web3ProvidersHttpProvider 사용;$web3 = new Web3(new HttpProvider('http://localhost:8545'));// timeout$web3 = new Web3(new HttpProvider('http://localhost:8545', 0.1 )));
$web3->clientVersion(function ($err, $version) {if ($err !== null) {// do Somethingreturn; }if (isset($version)) {echo '클라이언트 버전: ' . $버전; } });
Web3Web3 사용;Web3ProvidersHttpAsyncProvider 사용;$web3 = new Web3(new HttpAsyncProvider('http://localhost:8545'));// timeout$web3 = new Web3(new HttpAsyncProvider('http://localhost:8545', 0.1 ));// wait$promise = $web3->clientVersion(function ($err, $version) {// do 뭔가});Asyncawait($promise);
Web3Web3 사용;Web3ProvidersWsProvider 사용;$web3 = new Web3(new WsProvider('ws://localhost:8545'));// timeout$web3 = new Web3(new WsProvider('ws://localhost:8545', 0.1 ));// wait$promise = $web3->clientVersion(function ($err, $version) {// do 뭔가});Asyncawait($promise);// 연결 닫기$web3->provider->close();
Web3Web3 사용;$web3 = new Web3('http://localhost:8545');$eth = $web3->eth;
또는
Web3Eth 사용;$eth = new Eth('http://localhost:8545');
Web3Web3 사용;$web3 = new Web3('http://localhost:8545');$net = $web3->net;
또는
Web3Net 사용;$net = new Net('http://localhost:8545');
웹3
$web3->batch(true);$web3->clientVersion();$web3->hash('0x1234');$web3->execute(함수 ($err, $data) {if ($err !== null) {// 뭔가를 합니다// 예외가 발생할 수 있거나 예외 배열은 오류 유형에 따라 다릅니다.// 연결 오류: 예외 발생// json rpc error: 예외 배열return; }// 뭔가를 하세요});
에
$eth->batch(true);$eth->protocolVersion();$eth->syncing();$eth->provider->execute(function ($err, $data) {if ($err !== null) {// 뭔가를 하세요return; }// 뭔가를 하세요});
그물
$net->batch(true);$net->version();$net->listening();$net->provider->execute(function ($err, $data) {if ($err !== null) {// 뭔가를 하세요return; }// 뭔가를 하세요});
개인의
$personal->batch(true);$personal->listAccounts();$personal->newAccount('123456');$personal->provider->execute(function ($err, $data) {if ($err !== null) {// 뭔가를 하세요return; }// 뭔가를 하세요});
Web3Contract 사용;$contract = new Contract('http://localhost:8545', $abi);// 계약 배포$contract->bytecode($bytecode)->new($params, $callback);// 호출 계약 함수$contract->at($contractAddress)->call($functionName, $params, $callback);// 함수 변경 state$contract->at($contractAddress)->send($functionName, $params, $callback);// 배포 계약 가스 추정 $contract->bytecode($bytecode)->estimateGas($params, $callback); // 함수 가스 추정$contract->at($contractAddress)->estimateGas($functionName, $params, $callback);// 생성자 데이터 가져오기$constructorData = $contract->bytecode($bytecode)->getData($params);// 함수 데이터 가져오기$functionData = $contract->at($contractAddress)->getData($functionName, $params);
콜백은 자바스크립트 콜백과 다르기 때문에 범위 외부에 값을 할당해야 하는 경우 콜백에 대한 참조를 할당해야 합니다.
$newAccount = '';$web3->personal->newAccount('123456', function ($err, $account) use (&$newAccount) {if ($err !== null) {echo 'Error: ' . $err->getMessage();return; }$newAccount = $account;echo '새 계정: ' . $계정 . PHP_EOL; });
예제를 실행하려면 이더리움 블록체인 로컬(testrpc)을 실행해야 합니다.
docker를 개발용 machain으로 사용하는 경우 ethdock을 사용하여 로컬 이더리움 블록체인을 실행할 수 있습니다. 간단히 docker-compose up -d testrpc
실행하고 8545
포트를 노출하면 됩니다.
저장소를 복제하고 패키지를 설치합니다.
git clone https://github.com/web3p/web3.php.git && cd web3.php && composer install
테스트 스크립트를 실행합니다.
vendor/bin/phpunit
저장소를 복제하고 도커 컨테이너를 실행합니다.
git clone https://github.com/web3p/web3.php.git
web3.php를 web3.php/docker/app 디렉터리에 복사하고 컨테이너를 시작합니다.
cp files docker/app && docker-compose up -d php ganache
PHP 컨테이너를 입력하고 패키지를 설치합니다.
docker-compose exec php ash
TestCase.php
에서 testHost를 변경하세요.
/** * testHost * * @var string */ protected $testHost = 'http://ganache:8545';
테스트 스크립트 실행
vendor/bin/phpunit
컨테이너를 먼저 입력하세요.
docker-compose exec php ash
gmp
apk add gmp-dev docker-php-ext-install gmp
bcmath
docker-php-ext-install bcmath
/usr/local/etc/php/conf.d/
에서 확장 구성을 이동합니다.
mv /usr/local/etc/php/conf.d/extension-config-name to/directory
토도.
이미 web3.php에 기여해 주신 모든 분들께 감사드립니다!
MIT