Thanks. I did attempt various different auto-loading options, but it is 
entirely possible that I didn't do it correctly.
In the end I ended up not using the *php_namespace* and 
*php_metadata_namespace* options and it worked.

On Monday, 2 May 2022 at 20:37:56 UTC+2 [email protected] wrote:

> This looks similar to this issue 
> <https://github.com/protocolbuffers/protobuf/issues/6219>. Did you set up 
> protobuf 
> autoloading 
> <https://github.com/protocolbuffers/protobuf/blob/main/php/composer.json#L17>
>  correctly?
>
> On Monday, March 28, 2022 at 4:00:20 AM UTC-7 [email protected] wrote:
>
>> I'm sorry the autoloading is of course
>> ```
>> "psr-0": {
>>      "Famly\\Queue": "Packages/Application/Famly.Queue/Classes"
>> }
>> ```
>>
>> On Monday, 28 March 2022 at 12:58:28 UTC+2 Jakob Merrild wrote:
>>
>>> I'm trying to use the google/protobuf package for php, but am running 
>>> into an issue that I don't understand. When trying to construct an instance 
>>> of the generated class I'm met with the following exception
>>>
>>> InvalidArgumentException: Famly\Queue\Model\Proto\ExportRequest is not 
>>> found in descriptor pool. Only generated classes may derive from Message.
>>>
>>> I have added the following to `composer.json`
>>>
>>> ```
>>> "require":  {
>>>        ...,
>>>         "google/protobuf": "^3.19"
>>> }.
>>> "psr-0": {
>>>      "Famly\\Queue": "Packages/Application/Famly/Queue"
>>> }
>>> ````
>>>
>>> I'm using `protoc` version 3.19.4 and generated the the files with 
>>> protoc --proto_path="famlyqueue/src/main/protobuf" 
>>> --php_out="core/Packages/Application/Famly.Queue/Classes" 
>>> famlyqueue/src/main/protobuf/co/famly/export/ExportRequest.proto
>>>
>>> Here's the `proto` file
>>>
>>> ```
>>> syntax = "proto3";
>>>
>>> package co.famly.export.proto;
>>> option php_namespace = "Famly/Queue/Model/Proto";
>>> option php_metadata_namespace = "Famly/Queue/Model/Proto/Meta";
>>>
>>> message ExportRequest {
>>>     // The ID of the entity to export
>>>     string entityId = 1;
>>>     // The type of the entity to export
>>>     ExportEntityType entityType = 2;
>>> }
>>>
>>> enum ExportEntityType {
>>>     BILL_PAYER = 0;
>>>     BILL_PAYER_INVOICES = 1;
>>>     CHILD = 2;
>>>     LOGIN = 3;
>>>     LOGIN_POST_MEDIA = 4;
>>>     SITE = 5;
>>>     SITE_MEDIA = 6;
>>> }
>>> ```
>>>
>>> And the test where I'm trying to construct the class instance (simply 
>>> roundtrip test)
>>> ```
>>> <?php
>>> namespace Famly\Queue\Model\Proto;
>>>
>>> use Neos\Flow\Tests\UnitTestCase;
>>> use Neos\Flow\Utility\Algorithms;
>>>
>>> class ExportRequestTest extends UnitTestCase {
>>> /**
>>> * @test
>>> */
>>> public function canRoundtripSerialization() {
>>> $from = new ExportRequest();
>>> $entityId = Algorithms::generateUUID();
>>> $from->setEntityId($entityId);
>>> $from->setEntityType(ExportEntityType::SITE);
>>>
>>> $serialized = $from->serializeToString();
>>>
>>> $to = new ExportRequest();
>>> $to->mergeFromString($serialized);
>>>
>>> $this->assertEquals($to->getEntityId(), $entityId);
>>> $this->assertEquals($to->getEntityType(), ExportEntityType::SITE);
>>> }
>>> }
>>> ```
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/c72b94f3-e414-486b-b871-5c409423c31bn%40googlegroups.com.

Reply via email to