2017 © Pedro Peláez
 

library stringifier

Converts any value to a string

image

respect/stringifier

Converts any value to a string

  • Wednesday, March 21, 2018
  • by henriquemoody
  • Repository
  • 2 Watchers
  • 4 Stars
  • 3,698 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 3 Versions
  • 89 % Grown

The README.md

Respect\Stringifier

Build Status Code Coverage Latest Stable Version Total Downloads License, (*1)

Converts any PHP value into a string., (*2)

Installation

Package is available on Packagist, you can install it using Composer., (*3)

composer require respect/stringifier

This library requires PHP >= 8.1., (*4)

Usage

Below a quick guide of how to use the library., (*5)

Using as a function

echo Respect\Stringifier\stringify($value);

Using as an object

$stringify = Respect\Stringifier\Stringify::createDefault();

// with the `value` method
echo $stringify->value($value);

// with the `__invoke` method
echo $stringify($value);

Examples

use function Respect\Stringifier\stringify;

echo stringify('string') . PHP_EOL;
// "string"

echo stringify(implode(PHP_EOL, ['Multi-line', 'string'])) . PHP_EOL;
// "Multi-line\nstring"

echo stringify(1) . PHP_EOL;
// 1

echo stringify(0.5) . PHP_EOL;
// 0.5

echo stringify(true) . PHP_EOL;
// `true`

echo stringify(false) . PHP_EOL;
// `false`

echo stringify(null) . PHP_EOL;
// `null`

echo stringify(INF) . PHP_EOL;
// `INF`

echo stringify(-INF) . PHP_EOL;
// `-INF`

echo stringify(acos(8)) . PHP_EOL;
// `NaN`

echo stringify([1, 2, 3]) . PHP_EOL;
// `[1, 2, 3]`

echo stringify(['foo' => true, 'bar' => 42, 'baz' => ['qux' => INF, 'quux' => null]]) . PHP_EOL;
// `["foo": true, "bar": 42, "baz": ["qux": INF, "quux": null]]`

echo stringify(tmpfile()) . PHP_EOL;
// `resource <stream>`

echo stringify(BasicEnumeration::FOO) . PHP_EOL;
// `BasicEnumeration::FOO`

echo stringify(BackedEnumeration::QUX) . PHP_EOL;
// `BackedEnumeration::QUX`

echo stringify(new WithProperties()) . PHP_EOL;
// `WithProperties { +$publicProperty=true #$protectedProperty=42 -$privateProperty="something" }`

echo stringify(new WithUninitializedProperties()) . PHP_EOL;
// `WithUninitializedProperties { +$uninitializedProperty=*uninitialized* }`

echo stringify(new class { public int $property = 42; }) . PHP_EOL;
// `class { +$property=42 }`

echo stringify(new class extends WithProperties { }) . PHP_EOL;
// `WithProperties@anonymous { +$publicProperty=true #$protectedProperty=42 }`

echo stringify('chr') . PHP_EOL;
// `chr(int $codepoint): string`

echo stringify([new WithMethods(), 'publicMethod']) . PHP_EOL;
// `WithMethods->publicMethod(Iterator&Countable $parameter): ?static`

echo stringify('WithMethods::publicStaticMethod') . PHP_EOL;
// `WithMethods::publicStaticMethod(int|float $parameter): void`

echo stringify(['WithMethods', 'publicStaticMethod']) . PHP_EOL;
// `WithMethods::publicStaticMethod(int|float $parameter): void`

echo stringify(new WithInvoke()) . PHP_EOL;
// `WithInvoke->__invoke(int $parameter = 0): never`

echo stringify(static fn(int $foo): string => '') . PHP_EOL;
// `function (int $foo): string`

echo stringify(new DateTime()) . PHP_EOL;
// `DateTime { 2023-04-21T11:29:03+00:00 }`

echo stringify(new DateTimeImmutable()) . PHP_EOL;
// `DateTimeImmutable { 2023-04-21T11:29:03+00:00 }`

echo stringify(new Fiber('strlen')) . PHP_EOL;
// `Fiber { strlen(string $string): int }`

echo stringify((static fn(int $number) => yield $number)(7)) . PHP_EOL;
// `Generator { current() => 7 }`

echo stringify(new ConcreteIterator()) . PHP_EOL;
// `ConcreteIterator { current() => 1 }`

echo stringify(new ConcreteStringable()) . PHP_EOL;
// `ConcreteStringable { __toString() => "This is the return of __toString()" }`

echo stringify(new ConcreteJsonSerializable()) . PHP_EOL;
// `ConcreteJsonSerializable { jsonSerialize() => {"0":1,"1":2,"2":3,"foo":true} }`

echo stringify(new WithDebugInfo()) . PHP_EOL;
// `WithDebugInfo { __debugInfo() => ["info": "This is the return of __debugInfo()"] }`

echo stringify(new ArrayObject([1, 2, 3])) . PHP_EOL;
// `ArrayObject { getArrayCopy() => [1, 2, 3] }`

echo stringify(new RuntimeException()) . PHP_EOL;
// `RuntimeException { in file.php:119 }`

echo stringify(new InvalidArgumentException('This is the exception message')) . PHP_EOL;
// `InvalidArgumentException { "This is the exception message" in file.php:112 }`

echo stringify(Traversable::class) . PHP_EOL;
// `Traversable`

To see more examples of how to use the library check the integration tests., (*6)

Custom stringifiers

Stringifier library is extensible, you can create your own stringifiers and use them with the Stringify class., (*7)

use Respect\Stringifier\Stringifier;
use Respect\Stringifier\Stringifiers\CompositeStringifier;
use Respect\Stringifier\Stringify;

$compositeStringifier = CompositeStringifier::createDefault();
$compositeStringifier->prependStringifier(new class implements Stringifier {
    public function stringify(mixed $raw, int $depth): ?string
    {
        if (is_object($raw) && method_exists($raw, 'toString')) {
            return $raw->toString();
        }

        return null;
    }
});

$stringify = new Stringify($compositeStringifier);

echo $stringify->value(new class {
    public function toString(): string
    {
        return 'Hello, world!';
    }
});
// Hello, world!

The Versions

21/03 2018

dev-master

9999999-dev http://respect.github.io/Stringifier/

Converts any value to a string

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

respect stringifier stringify

29/12 2017

0.2.0

0.2.0.0 http://respect.github.io/Stringifier/

Converts any value to a string

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

respect stringifier stringify

28/12 2017

0.1.0

0.1.0.0 http://respect.github.io/Stringifier/

Converts any value to a string

  Sources   Download

MIT

The Requires

  • php >=7.1

 

The Development Requires

respect stringifier stringify