ホームページ  >  記事  >  バックエンド開発  >  エクスポートされていないメソッドがあり、別のパッケージで定義されているため、型は 'X' を実装できません

エクスポートされていないメソッドがあり、別のパッケージで定義されているため、型は 'X' を実装できません

WBOY
WBOY転載
2024-02-09 11:10:10403ブラウズ

エクスポートされていないメソッドがあり、別のパッケージで定義されているため、型は X を実装できません

php 編集者 Yuzi、こんにちは! 「X」タイプの実装の問題については、エクスポートされていないメソッドがあり、別のパッケージで定義されているため、直接実装することはできません。 PHP では、異なるパッケージ間のメソッドやプロパティに直接アクセスすることはできません。 「X」タイプを実装する場合は、インターフェイスまたは継承を使用して、必要な機能を間接的に実装することを検討できます。インターフェイスを定義して別のクラスに実装するか、継承することによって、必要なメソッドとプロパティを取得します。これにより、「X」タイプの機能をさまざまなパッケージに実装できるようになります。お役に立てれば!

質問の内容

次のコードがあります:

リーリー

次のエラーが発生しました:

リーリー

私のメッセージサーバーの構造は次のようになります:

リーリー

エラーは次の行にあります:

リーリー

何が起こったのかわかりません:(

回避策

mustEmbedUnimplementedMessageServiceServer() の実装を提供しないでください。サーバー構造を埋め込む必要があります UnimplementedMessageServiceServer . メンバーは、これを伝えるために so という名前が付けられています。インターフェイスには、

というドキュメント コメントもあります。

すべての実装は、上位互換性のために UnimplementedMessageServiceServer を組み込む必要があります。

いつの日か、gRPC 開発者がサーバー インターフェイスに新しいメソッドを追加するかもしれないという考えです。これを行うと、「メソッドが実装されていません」エラーを返す新しいメソッドも unimplemented 型に追加されます。 unimplemented 型をサーバー型に埋め込む必要があるため、サーバーのエラーによりコードが突然型チェックに失敗し始めるのではなく、メソッドを継承してエラーをスローするデフォルトの実装を取得します。 type には新しいメソッドがありません。

以上がエクスポートされていないメソッドがあり、別のパッケージで定義されているため、型は 'X' を実装できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。