This is just a gist, because you need to check how your value objects should look like. Use like this:
class User extends Model {
use CastsValueObjects;
protected $casts = [
'email' => EmailAddress::class
];
}
See files attached to this gist.