for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace BitWasp\Bitcoin\Networking\Serializer\Message;
use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Crypto\EcAdapter\EcSerializer;
use BitWasp\Bitcoin\Networking\Messages\Alert;
use BitWasp\Bitcoin\Networking\Serializer\Structure\AlertDetailSerializer;
use BitWasp\Bitcoin\Serializer\Types;
use BitWasp\Buffertools\Buffer;
use BitWasp\Buffertools\Parser;
class AlertSerializer
{
/**
* @var AlertDetailSerializer
*/
private $detail;
* @param AlertDetailSerializer $detail
public function __construct(AlertDetailSerializer $detail)
$this->detail = $detail;
$this->varstring = Types::varstring();
varstring
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
class MyClass { } $x = new MyClass(); $x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:
class MyClass { public $foo; } $x = new MyClass(); $x->foo = true;
}
* @param Parser $parser
* @return Alert
public function fromParser(Parser $parser)
$detailBuffer = $this->varstring->read($parser);
$detail = $this->detail->fromParser(new Parser($detailBuffer));
$sigBuffer = $this->varstring->read($parser);
$adapter = Bitcoin::getEcAdapter();
$serializer = EcSerializer::getSerializer('BitWasp\Bitcoin\Crypto\EcAdapter\Serializer\Signature\DerSignatureSerializerInterface', true, $adapter);
$sig = $serializer->parse($sigBuffer);
return new Alert(
$detail,
$sig
);
* @param $data
public function parse($data)
return $this->fromParser(new Parser($data));
* @param Alert $alert
* @return \BitWasp\Buffertools\Buffer
public function serialize(Alert $alert)
return new Buffer("{$this->varstring->write($alert->getDetail()->getBuffer())}{$this->varstring->write($alert->getSignature()->getBuffer())}");
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: