internations / type-jail
Enforce type constraints
Installs: 49 852
Dependents: 2
Suggesters: 0
Security: 0
Stars: 22
Watchers: 37
Forks: 3
Open Issues: 0
Requires
- php: >=7.4
- friendsofphp/proxy-manager-lts: ~1
Requires (Dev)
This package is auto-updated.
Last update: 2024-10-10 17:25:18 UTC
README
Enforce super type contract of an object
Usage
use InterNations\Component\TypeJail\Factory\SuperTypeFactory; use InterNations\Component\TypeJail\Factory\JailFactory; use InterNations\Component\TypeJail\Factory\SuperTypeJailFactory; $file = new SplFileObject(__FILE__); $factory = new JailFactory(); $file = $factory->createInstanceJail($file, 'SplFileInfo'); // Will return true var_dump($file instanceof SplFileInfo); // Will return the file path because that method is declared in SplFileInfo $file->getFilePath(); // Will throw an exception indicating a type violation because that method // is declared in SplFileObject $file->flock(); $factory = new SuperTypeJailFactory(); $file = $factory->createInstanceJail($file, 'SplFileInfo'); // Will return false var_dump($file instanceof SplFileInfo); // Will return the file path because that method is declared in SplFileInfo $file->getFilePath(); // Will throw an exception indicating a type violation because that method // is declared in SplFileObject $file->flock(); $factory = new SuperTypeFactory(); $file = $factory->createInstanceJail($file, 'SplFileInfo'); // Will return false var_dump($file instanceof SplFileInfo); // Will return the file path because that method is declared in SplFileInfo $file->getFilePath(); // Fatal error: method not found $file->flock();
Acknowledgement
Standing on the shoulders of ocramius/proxy-manager by Marco Pivetta that makes it super-duper easy to work with proxies.