phoneburner / link-tortilla
Provides a simple set of traits to allow wrapping user classes as PSR-13 Link implementations.
Requires
- php: ~8.2.0 || ~8.3.0 || ~8.4.0
- psr/link: ^2.0
Requires (Dev)
- guzzlehttp/psr7: ^2.7
- phoneburner/coding-standard: ^1.0
- php-parallel-lint/php-parallel-lint: ^1.4
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.1
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^12.2
- psr/http-message: ^2.0
- rector/rector: ^2.1
README
Provides a simple set of traits to allow wrapping user classes as [PSR-13 Link] (https://www.php-fig.org/psr/psr-13/) implementations. Wrapping the class allows easy addition of convenience methods, while maintaining compatibility with code that relies on the underlying PSR interfaces.
For convenience, this project also includes \PhoneBurner\LinkTortilla\Link
, a
simple implementation of the PSR-13 Psr\Link\EvolvableLinkInterface
that can
be used as the instance passed into the wrapper class.
Installation
The preferred method of installation is to use Composer:
composer require phoneburner/link-tortilla
This library currently requires PHP >= 8.2 and psr/link
^2.0.
Usage
To add PSR-13 Link behavior to an arbitrary object, add the LinkWrapper
trait,
and set the wrapped Link with setWrapped()
. Now if you add "implements Psr\Link\EvolvableLinkInterface"
to the class definition, you will see that all the required methods are defined
and proxy to the wrapped Link.
<?php declare(strict_types=1); use PhoneBurner\LinkTortilla\LinkWrapper; use Psr\Link\LinkInterface; class MyWrappedLink implements LinkInterface { use LinkWrapper; public function __construct(LinkInterface $link) { $this->setWrapped($link); } }
Contributing
Contributions are welcome, please see CONTRIBUTING.md for more information, including reporting bug and creating pull requests.
Coordinated Disclosure
Keeping user information safe and secure is a top priority, and we welcome the contribution of external security researchers. If you believe you've found a security issue, please read SECURITY.md for instructions on submitting a vulnerability report.