PHP code example of xdimedrolx / hoa-stream
1. Go to this page and download the library: Download xdimedrolx/hoa-stream library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
xdimedrolx / hoa-stream example snippets
class BasicFile extends Hoa\Stream\Stream
{
protected function &_open($streamName, Hoa\Stream\Context $context = null)
{
if (null === $context) {
$out = fopen($streamName, 'rb');
} else {
$out = fopen($streamName, 'rb', false, $context->getContext());
}
return $out;
}
protected function _close()
{
return fclose($this->getStream());
}
}
$file = new BasicFile('/path/to/file');
class BasicFile extends Hoa\Stream\Stream implements Hoa\Stream\IStream\In
{
// …
public function read($length)
{
return fread($this->getStream(), max(1, $length));
}
// …
}
$chunk = $file->read(42);
$contextId = 'my_http_context';
$context = Hoa\Stream\Context::getInstance($contextId);
$context->setOptions([
// …
]);
$basicFile = new BasicFile('/path/to/file', $contextId);
Hoa\Event\Event::getEvent('hoa://Event/Stream//path/to/file:close-before')->attach(
function (Hoa\Event\Bucket $bucket) {
// do something!
}
);
$file = new BasicFile('/path/to/file', null, true);
// do something
$file->open();
$basic = new BasicFile(
'https://hoa-project.net/', // stream name
null, // context ID
true // defere opening
);
$basic->on(
'connect',
function (Hoa\Event\Bucket $bucket) {
echo 'Connected', "\n";
}
);
$basic->on(
'redirect',
function (Hoa\Event\Bucket $bucket) {
echo 'Redirection to ', $bucket->getData()['message'], "\n";
}
);
$basic->on(
'mimetype',
function (Hoa\Event\Bucket $bucket) {
echo 'MIME-Type is ', $bucket->getData()['message'], "\n";
}
);
$basic->on(
'size',
function (Hoa\Event\Bucket $bucket) {
echo 'Size is ', $bucket->getData()['max'], "\n";
}
);
$basic->on(
'progress',
function (Hoa\Event\Bucket $bucket) {
echo 'Progressed, ', $bucket->getData()['transferred'], ' bytes downloaded', "\n";
}
);
// Then open.
$basic->open();
Hoa\Stream\Wrapper\Wrapper::register('tmp', Tmp::class);
class ToUpper extends Hoa\Stream\Filter\Basic
{
public function filter($in, $out, &$consumed, $closing)
{
$iBucket = new Hoa\Stream\Bucket($in);
$oBucket = new Hoa\Stream\Bucket($out);
while (false === $iBucket->eob()) {
$consumed += $iBucket->getLength();
$iBucket->setData(strtoupper($iBucket->getData()));
$oBucket->append($iBucket);
}
unset($iBucket);
unset($oBucket);
return parent::PASS_ON;
}
}
$filterName = 'toupper';
Hoa\Stream\Filter::register($filterName, ToUpper::class);
$file = new Hoa\File\Read(__FILE__);
Hoa\Stream\Filter::append($file, $filterName, Hoa\Stream\Filter::READ);
php
echo $file->readAll();