PHP namespace annotation
This rule enforces that if a proto file for a public API surface sets
option php_namespace, that it uses language idiomatic conventions, as
mandated in AIP-191.
Details
This rule looks at each proto file, and complains if the php_namespace file
annotation uses anything other than upper camel case, or includes characters
other than letters, numbers, and ..
It also ensures that versions with stability (e.g. V1beta1) are capitalized
appropriately.
Examples
Case
Incorrect code for this rule:
// Incorrect.
syntax = "proto3";
package google.example.v1;
option php_namespace = "google\\example\\v1"; // Should be UpperCamelCase.
// Incorrect.
syntax = "proto3";
package google.example.v1;
option php_namespace = "Google::Example::V1"; // Separator should be backslash.
Correct code for this rule:
// Correct.
syntax = "proto3";
package google.example.v1;
option php_namespace = "Google\\Example\\V1";
Versions with stability
Incorrect code for this rule:
// Incorrect.
syntax = "proto3";
package google.example.v1beta1;
option php_namespace = "Google\\Example\\V1Beta1"; // Should be V1beta1.
Correct code for this rule:
// Correct.
syntax = "proto3";
package google.example.v1beta1;
option php_namespace = "Google\\Example\\V1beta1";
Known issues
This rule will improperly complain if it encounters an acronym. For example, it
will complain about Google\Cloud\AutoML\V1, preferring AutoMl. This lint
rule may be disabled in this case.
Disabling
If you need to violate this rule, use a comment at the top of the file. Remember to also include an aip.dev/not-precedent comment explaining why.
// (-- api-linter: core::0191::php-namespace=disabled
// aip.dev/not-precedent: We need to do this because reasons. --)
syntax = "proto3";
package google.example.v1;
option php_namespace = "google\\example\\v1";
View on GitHub