diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java index 1046add66ec..80e88c0fb4b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PhpClientCodegen.java @@ -372,6 +372,10 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig { return camelize(name); } + public static String camelize(String word) { + return DefaultCodegen.camelize(word).replaceAll("\\$", ""); + } + @Override public String toModelFilename(String name) { // should be the same as the model name diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/php/PhpModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/php/PhpModelTest.java index 3cad349a882..57fd7123b86 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/php/PhpModelTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/php/PhpModelTest.java @@ -241,4 +241,20 @@ public class PhpModelTest { Assert.assertEquals(cm.imports.size(), 2); Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1); } + + @Test(description = "avoid $ in class and file name, cased by two underscore in the model name.") + public void ModelTest() { + final Model model = new ModelImpl() + .description("a map model") + .additionalProperties(new RefProperty("#/definitions/Children")); + final DefaultCodegen codegen = new PhpClientCodegen(); + final CodegenModel cm = codegen.fromModel("sample__model", model); + + Assert.assertEquals(cm.name, "sample__model"); + Assert.assertEquals(cm.classname, "SampleModel"); + Assert.assertEquals(cm.description, "a map model"); + Assert.assertEquals(cm.vars.size(), 0); + Assert.assertEquals(cm.imports.size(), 2); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1); + } }