ikilobyte/pulsar-client-php

Schema doesn't respect Object

djdance opened this issue · 4 comments

We are trying to work with schemas.
It appears that it sends any king of object, regardless of schema set.
For example, it will send your initial Person Object from the example without any errors.
The only thing it checks is schema itself, it must be valid (that's okay).

Is there any option to validate an object before send?

thanks

@djdance

Yes, schemas can send any object to pulsar without validating the object options, but it must meet this one requirement, the object must be able to json_encode, however json_encode will only extract public properties, so as long as the object can successfully json_encode it will be sent successfully, the same goes for the consumer, when it receives When the json data is received, it will be converted to the corresponding object, and there is no need to manually convert it to an object, which saves us a lot of conversion work

example

class Person
{
    public $id;
    public $name;
    public $age;

    protected $test = 'ignore';
    // ...
}

$person = new Person();
$person->id = 1;
$person->name = 'Tony';
$person->age = 1;

echo json_encode($person);

// output:{"id":1,"name":"Tony","age":1}

$producer->send($person);   // The actual message sent is `{"id":1,"name":"Tony ","age":1}`

got it.
Would you plan to add some kind of validation to Object sending?
as in appropriate Java library (they say)

I don't know what verification there is in the java library, can you tell me in detail?