Provides a foundation for data transfer objects in PHP applications. Built with support for ArrayAccess, JsonSerializable interfaces and hydration provided by our dependency injection container (webdevcave/yadic).
- PHP >= 8.4.1
- Composer
Using composer:
composer require webdevcave/dtoExtend the DataTransferObject class and define your properties. You can use the from() method to hydrate the DTO from an array.
use Webdevcave\DTO\DataTransferObject;
class UserDTO extends DataTransferObject
{
public function __construct(
public readonly string $name, // Use 'readonly' for strictness.
public readonly string $email,
) {}
}
// Hydrating from array
$data = ['name' => 'John Doe', 'email' => 'john@example.com'];
$user = UserDTO::from($data);
echo $user->name; // John Doe
// ArrayAccess
echo $user['email']; // john@example.com
// JSON Serialization
echo json_encode($user);The following scripts are available via Composer:
composer test: Run the testscomposer test-coverage: Run the tests with coverage (requires Xdebug)composer check-coverage: Check the coverage (run test-coverage first)
The project uses PHPUnit for testing. You can run the tests using:
composer testContributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or a pull request on GitHub.
This project is licensed under the MIT License - see the LICENSE file for details.