SplStream

Use

Resource flow data operation

How to operate

Method name parameter Description
__construct $resource = '',$mode = 'r+' Initialize resources and read and write operations
__toString Output resource
close Close an open file pointer
detach Get resources and reset resource objects
getSize Get resource size Code conversion
tell Returns the location of the file pointer read/write
eof Whether the file pointer has reached the end of the file
isSeekable Get can be positioned in the current stream
seek $offset, $whence = SEEK_SET Positioning in the file pointer
rewind Rewind the position of the file pointer
isWritable Is it writable
write $string Write content
isReadable Readable
read $length Reading content
length Get the length of the string
getContents Read resource stream to a string
getMetadata $key = null Get header/metadata from the package protocol file pointer
getStreamResource Access to resources
truncate $size = 0 Truncate the file to the given length

example

__construct

Initialize resources and read and write operations

  • mixed $resource resource
  • mixed $mode read and write operation type
    function __construct($resource = '',$mode = 'r+')

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$resource = fopen('./test.txt', 'ab+');
$stream = new \EasySwoole\Spl\SplStream($resource);
var_dump($stream->__toString());

/**
 * The output is over:
 * string(10) "Easyswoole"
 */

__toString

Output resource

public function __toString()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
var_dump($stream->__toString());

/**
 * The output is over:
 * string(10) "Easyswoole"
 */

close

Close an open file pointer

public function close()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->close();
var_dump($stream->__toString());

/**
 * The output is over:
 * string(0) ""
 */

detach

Get resources and reset resource objects

public function detach()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->detach();
var_dump($stream->__toString());

/**
 * The output is over:
 * string(0) ""
 */

getSize

Get resource size

public function getSize()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$size = $stream->getSize();
var_dump($size);

/**
 * The output is over:
 * int(10)
 */

tell

Returns the location of the file pointer read/write

public function tell()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$position = $stream->tell();
var_dump($position);

/**
 * The output is over:
 * int(10)
 */

eof

Whether the file pointer has reached the end of the file

public function eof()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$eof = $stream->eof();
var_dump($eof);
$stream->detach();
$eof = $stream->eof();
var_dump($eof);

/**
 * The output is over:
 * bool(false)
 * bool(true)
 */

isSeekable

Get can be positioned in the current stream

public function isSeekable()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$seekable = $stream->isSeekable();
var_dump($seekable);

/**
 * The output is over:
 * bool(true)
 */

seek

Positioning in the file pointer

  • mixed $offset offset

  • mixed $whence specified type

    public function seek($offset, $whence = SEEK_SET)

    Specified type:

  • SEEK_SET set position equal to offset byte

  • SEEK_CUR sets the position to the current position plus offset

  • SEEK_END sets the position to the end of the file plus offset

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->seek(2);
$position = $stream->tell();
var_dump($position);

/**
 * The output is over:
 * int(2)
 */

rewind

Rewind the position of the file pointer

public function rewind()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->rewind();
$position = $stream->tell();
var_dump($position);

/**
 * The output is over:
 * int(0)
 */

isWritable

Is it writable

public function isWritable()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$writeAble = $stream->isWritable();
var_dump($writeAble);

/**
 * The output is over:
 * bool(true)
 */

write

Write content

  • mixed $string content
    public function write($string)

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->write(', 666');
var_dump($stream->__toString());

/**
 * The output is over:
 * string(15) "Easyswoole, 666"
 */

isReadable

Whether to read

public function isReadable()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$readAble = $stream->isReadable();
var_dump($readAble);

/**
 * The output is over:
 * bool(true)
 */

read

Reading content

  • mixed $length length
    public function read($length)

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->rewind();
$string = $stream->read(4);
var_dump($string);

/**
 * The output is over:
 * string(4) "Easy"
 */

getContents

Read resource stream to a string

public function getContents()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->rewind();
$string = $stream->getContents();
var_dump($string);

/**
 * The output is over:
 * string(10) "Easyswoole"
 */

getMetadata

Get header/metadata from the package protocol file pointer

public function getMetadata($key = null)

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$meta = $stream->getMetadata();
var_dump($meta['stream_type']);

/**
 * The output is over:
 * string(6) "MEMORY"
 */

getStreamResource

Access to resources

function getStreamResource()

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$resource = $stream->getStreamResource();
fseek($resource, 0, SEEK_SET);
var_dump(stream_get_contents($resource));

/**
 * The output is over:
 * string(10) "Easyswoole"
 */

truncate

Truncate the file to the given length

  • mixed $size Intercept file size
    function truncate($size = 0)

example

<?php
/**
 * Created by PhpStorm.
 * User: root
 * Date: 19-7-2
 * Time: 10:25 am
 */

require_once 'vendor/autoload.php';

$stream = new \EasySwoole\Spl\SplStream('Easyswoole');
$stream->truncate(4);
var_dump($stream->__toString());

/**
 * The output is over:
 * string(4) "Easy"
 */

Ps: There is a difference between resources and resource flows. The resources mentioned here are data or variables. The resource flow is a file stream.