/** * * @param resource $stream Stream * @throws \InvalidArgumentException */ public function __construct($stream) { if (!\is_resource($stream)) { throw new \InvalidArgumentException('Argument should be a resource'); } $resType = \get_resource_type($stream); if (\preg_match('/stream/i', $resType)) { $this->stream = $stream; $metadata = $this->getMetaData(); \preg_match('/^([rwax])(\\+?)/', $metadata['mode'], $match); $this->flags = new BitMask(); if ($match[2] == '+') { $this->flags->add(self::READABLE)->add(self::WRITABLE); } else { if ($match[1] == 'r') { $this->flags->add(self::READABLE); } else { $this->flags->add(self::WRITABLE); } } if (\preg_match('/persistent/i', $resType)) { $this->flags->add(self::PERSISTENT); } if ($this->getMetaData('seekable', false)) { $this->flags->add(self::SEEKABLE); } } else { throw new \InvalidArgumentException('Invalid stream resource'); } }
/** * @test */ public function bindTest() { $binded = 128; $this->bitmask->bind($binded); $this->assertTrue($this->bitmask->add(64) === $this->bitmask && $binded === 192); }
/** * Returns a bitmask with all log levels registered. * * @return BitMask */ public static function maskAll() { static $mask = null; if (\is_null($mask)) { $mask = new BitMask(); foreach (static::listLevels() as $level) { $mask->add($level); } } return clone $mask; }