Stream-aware content hashing contract and default implementation.
Use this package when services need to hash either an in-memory string or a PSR-7 stream through one small abstraction.
composer require componenta/hasheruse Componenta\Stdlib\Hasher;
$hasher = new Hasher('sha256');
$hash = $hasher->hash('content');
$sha1 = $hasher->withAlgorithm('sha1');Hasher exposes the selected algorithm as read-only public state:
$hasher->algorithm; // sha256withAlgorithm() returns a new immutable instance.
use Psr\Http\Message\StreamInterface;
interface HasherInterface
{
public function hash(string|StreamInterface $input): string;
}When a stream is passed, the default implementation rewinds the stream before hashing and rewinds it again after hashing. This lets callers pass the same stream to storage after computing its digest.
| Package | Why it matters here |
|---|---|
componenta/file-hasher |
Hashes files by filename. |
componenta/password |
Hashes passwords with PHP's dedicated password API. |