├── .browserslistrc ├── .eslintignore ├── .eslintrc.js ├── .github └── workflows │ ├── deploy-pages.yml │ ├── lint.yml │ └── test.yml ├── .gitignore ├── LICENSE ├── README.md ├── babel.config.js ├── index.html ├── package-lock.json ├── package.json ├── postcss.config.js ├── public └── favicon.ico ├── screenshots └── screenshot.png ├── src ├── @types │ └── shims-vue.d.ts ├── App.vue ├── assets │ ├── logo.png │ └── scss │ │ ├── _prism_theme.scss │ │ └── theme.scss ├── components │ ├── Alert.vue │ ├── Card.vue │ ├── Code.vue │ ├── Footer.vue │ ├── Settings.vue │ ├── ThemeColorSwitch.vue │ ├── buttons │ │ └── IconButton.vue │ ├── form │ │ ├── Checkbox.vue │ │ ├── FormGroup.vue │ │ ├── Label.vue │ │ ├── Select.vue │ │ ├── TextArea.vue │ │ └── TextInput.vue │ ├── icons │ │ ├── CheckIcon.vue │ │ ├── ClipboardIcon.vue │ │ ├── CloudArrowDownIcon.vue │ │ ├── GithubIcon.vue │ │ ├── HalfFilledCircleIcon.vue │ │ ├── MoonIcon.vue │ │ └── SunIcon.vue │ ├── loaders │ │ └── Spinner.vue │ └── tab-panel │ │ ├── TabContent.vue │ │ ├── TabNav.vue │ │ ├── TabNavItem.vue │ │ └── TabPanel.vue ├── dto │ ├── PhpClass.ts │ ├── PhpProperty.ts │ ├── SelectOption.ts │ └── Settings.ts ├── enums │ ├── PhpDocblock.ts │ ├── PhpVersion.ts │ ├── PhpVisibility.ts │ ├── PropertyDocblockType.ts │ ├── StringCase.ts │ └── ThemeColor.ts ├── factories │ ├── JsonToPhpFactory.ts │ ├── PhpClassFactory.ts │ └── PhpTypeFactory.ts ├── hooks │ ├── use-file-export.ts │ ├── use-json-converter.ts │ ├── use-php-class-export.ts │ ├── use-php-code-presenter.ts │ └── use-settings.ts ├── main.ts ├── php-types │ ├── ArrayType.ts │ ├── BooleanType.ts │ ├── FloatType.ts │ ├── IntType.ts │ ├── NullType.ts │ ├── PhpClassType.ts │ ├── PhpType.ts │ ├── StdClassType.ts │ ├── StringType.ts │ └── UnknownType.ts ├── php │ └── ReservedKeywords.ts ├── presenters │ ├── PhpClassFromJsonMethodPresenter.ts │ ├── PhpClassPresenter.ts │ ├── PhpConstructorPresenter.ts │ ├── PhpDocblockPresenter.ts │ ├── PhpFluentSetterPresenter.ts │ ├── PhpGetterPresenter.ts │ ├── PhpPropertyPresenter.ts │ ├── PhpPropertyTypePresenter.ts │ └── PhpSetterPresenter.ts ├── router │ └── index.ts ├── support │ ├── EnumSelect.ts │ └── Str.ts ├── views │ └── Generator.vue └── writers │ └── CodeWriter.ts ├── tailwind.config.js ├── tests ├── converter │ ├── fixtures │ │ ├── all_types_json.txt │ │ ├── merges_nested_arrays.txt │ │ ├── results │ │ │ ├── all_types_json_php_7_3_with_constructor.txt │ │ │ ├── all_types_json_php_7_3_with_constructor_and_readonly_properties.txt │ │ │ ├── all_types_json_php_7_3_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_7_3_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── all_types_json_php_7_3_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_7_3_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_7_3_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_7_3_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── all_types_json_php_7_3_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── all_types_json_php_7_3_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_7_3_with_setters_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_7_3_with_setters_and_from_json_method.txt │ │ │ ├── all_types_json_php_7_3_without_constructor.txt │ │ │ ├── all_types_json_php_7_3_without_constructor_and_readonly_classes.txt │ │ │ ├── all_types_json_php_7_3_without_constructor_and_readonly_properties.txt │ │ │ ├── all_types_json_php_7_4_with_constructor.txt │ │ │ ├── all_types_json_php_7_4_with_constructor_and_readonly_properties.txt │ │ │ ├── all_types_json_php_7_4_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_7_4_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── all_types_json_php_7_4_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_7_4_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_7_4_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_7_4_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── all_types_json_php_7_4_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── all_types_json_php_7_4_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_7_4_with_setters_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_7_4_with_setters_and_from_json_method.txt │ │ │ ├── all_types_json_php_7_4_without_constructor.txt │ │ │ ├── all_types_json_php_7_4_without_constructor_and_readonly_classes.txt │ │ │ ├── all_types_json_php_7_4_without_constructor_and_readonly_properties.txt │ │ │ ├── all_types_json_php_8_0_with_constructor.txt │ │ │ ├── all_types_json_php_8_0_with_constructor_and_readonly_properties.txt │ │ │ ├── all_types_json_php_8_0_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_8_0_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── all_types_json_php_8_0_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_8_0_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_0_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_8_0_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── all_types_json_php_8_0_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── all_types_json_php_8_0_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_0_with_setters_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_8_0_with_setters_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_0_without_constructor.txt │ │ │ ├── all_types_json_php_8_0_without_constructor_and_readonly_classes.txt │ │ │ ├── all_types_json_php_8_0_without_constructor_and_readonly_properties.txt │ │ │ ├── all_types_json_php_8_1_with_constructor.txt │ │ │ ├── all_types_json_php_8_1_with_constructor_and_readonly_properties.txt │ │ │ ├── all_types_json_php_8_1_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_8_1_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── all_types_json_php_8_1_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_8_1_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_1_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_8_1_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── all_types_json_php_8_1_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── all_types_json_php_8_1_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_1_with_setters_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_8_1_with_setters_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_1_without_constructor.txt │ │ │ ├── all_types_json_php_8_1_without_constructor_and_readonly_classes.txt │ │ │ ├── all_types_json_php_8_1_without_constructor_and_readonly_properties.txt │ │ │ ├── all_types_json_php_8_2_with_constructor.txt │ │ │ ├── all_types_json_php_8_2_with_constructor_and_readonly_properties.txt │ │ │ ├── all_types_json_php_8_2_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_8_2_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── all_types_json_php_8_2_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_8_2_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_2_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_8_2_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── all_types_json_php_8_2_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── all_types_json_php_8_2_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_2_with_setters_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_8_2_with_setters_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_2_without_constructor.txt │ │ │ ├── all_types_json_php_8_2_without_constructor_and_readonly_classes.txt │ │ │ ├── all_types_json_php_8_2_without_constructor_and_readonly_properties.txt │ │ │ ├── all_types_json_php_8_3_with_constructor.txt │ │ │ ├── all_types_json_php_8_3_with_constructor_and_readonly_properties.txt │ │ │ ├── all_types_json_php_8_3_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_8_3_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── all_types_json_php_8_3_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_8_3_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_3_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── all_types_json_php_8_3_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── all_types_json_php_8_3_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── all_types_json_php_8_3_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_3_with_setters_and_from_json_array_method.txt │ │ │ ├── all_types_json_php_8_3_with_setters_and_from_json_method.txt │ │ │ ├── all_types_json_php_8_3_without_constructor.txt │ │ │ ├── all_types_json_php_8_3_without_constructor_and_readonly_classes.txt │ │ │ ├── all_types_json_php_8_3_without_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_constructor.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_setters_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_7_3_with_setters_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_7_3_without_constructor.txt │ │ │ ├── merges_nested_arrays_php_7_3_without_constructor_and_readonly_classes.txt │ │ │ ├── merges_nested_arrays_php_7_3_without_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_constructor.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_setters_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_7_4_with_setters_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_7_4_without_constructor.txt │ │ │ ├── merges_nested_arrays_php_7_4_without_constructor_and_readonly_classes.txt │ │ │ ├── merges_nested_arrays_php_7_4_without_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_constructor.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_setters_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_8_0_with_setters_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_0_without_constructor.txt │ │ │ ├── merges_nested_arrays_php_8_0_without_constructor_and_readonly_classes.txt │ │ │ ├── merges_nested_arrays_php_8_0_without_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_constructor.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_setters_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_8_1_with_setters_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_1_without_constructor.txt │ │ │ ├── merges_nested_arrays_php_8_1_without_constructor_and_readonly_classes.txt │ │ │ ├── merges_nested_arrays_php_8_1_without_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_constructor.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_setters_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_8_2_with_setters_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_2_without_constructor.txt │ │ │ ├── merges_nested_arrays_php_8_2_without_constructor_and_readonly_classes.txt │ │ │ ├── merges_nested_arrays_php_8_2_without_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_constructor.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_constructor_and_readonly_properties.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_setters_and_from_json_array_method.txt │ │ │ ├── merges_nested_arrays_php_8_3_with_setters_and_from_json_method.txt │ │ │ ├── merges_nested_arrays_php_8_3_without_constructor.txt │ │ │ ├── merges_nested_arrays_php_8_3_without_constructor_and_readonly_classes.txt │ │ │ ├── merges_nested_arrays_php_8_3_without_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_7_3_with_constructor.txt │ │ │ ├── simple_json_data_php_7_3_with_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_7_3_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_7_3_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── simple_json_data_php_7_3_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_7_3_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_7_3_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_7_3_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── simple_json_data_php_7_3_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── simple_json_data_php_7_3_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_7_3_with_setters_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_7_3_with_setters_and_from_json_method.txt │ │ │ ├── simple_json_data_php_7_3_without_constructor.txt │ │ │ ├── simple_json_data_php_7_3_without_constructor_and_readonly_classes.txt │ │ │ ├── simple_json_data_php_7_3_without_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_7_4_with_constructor.txt │ │ │ ├── simple_json_data_php_7_4_with_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_7_4_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_7_4_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── simple_json_data_php_7_4_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_7_4_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_7_4_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_7_4_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── simple_json_data_php_7_4_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── simple_json_data_php_7_4_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_7_4_with_setters_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_7_4_with_setters_and_from_json_method.txt │ │ │ ├── simple_json_data_php_7_4_without_constructor.txt │ │ │ ├── simple_json_data_php_7_4_without_constructor_and_readonly_classes.txt │ │ │ ├── simple_json_data_php_7_4_without_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_8_0_with_constructor.txt │ │ │ ├── simple_json_data_php_8_0_with_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_8_0_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_8_0_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── simple_json_data_php_8_0_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_8_0_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_0_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_8_0_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── simple_json_data_php_8_0_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── simple_json_data_php_8_0_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_0_with_setters_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_8_0_with_setters_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_0_without_constructor.txt │ │ │ ├── simple_json_data_php_8_0_without_constructor_and_readonly_classes.txt │ │ │ ├── simple_json_data_php_8_0_without_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_8_1_with_constructor.txt │ │ │ ├── simple_json_data_php_8_1_with_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_8_1_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_8_1_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── simple_json_data_php_8_1_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_8_1_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_1_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_8_1_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── simple_json_data_php_8_1_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── simple_json_data_php_8_1_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_1_with_setters_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_8_1_with_setters_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_1_without_constructor.txt │ │ │ ├── simple_json_data_php_8_1_without_constructor_and_readonly_classes.txt │ │ │ ├── simple_json_data_php_8_1_without_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_8_2_with_constructor.txt │ │ │ ├── simple_json_data_php_8_2_with_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_8_2_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_8_2_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── simple_json_data_php_8_2_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_8_2_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_2_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_8_2_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── simple_json_data_php_8_2_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── simple_json_data_php_8_2_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_2_with_setters_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_8_2_with_setters_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_2_without_constructor.txt │ │ │ ├── simple_json_data_php_8_2_without_constructor_and_readonly_classes.txt │ │ │ ├── simple_json_data_php_8_2_without_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_8_3_with_constructor.txt │ │ │ ├── simple_json_data_php_8_3_with_constructor_and_readonly_properties.txt │ │ │ ├── simple_json_data_php_8_3_with_constructor_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_8_3_with_constructor_readonly_properties_and_promoted_properties.txt │ │ │ ├── simple_json_data_php_8_3_with_constructor_readonly_properties_promoted_properties_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_8_3_with_constructor_readonly_properties_promoted_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_3_with_constructor_readonly_properties_promoted_properties_getters_and_setters.txt │ │ │ ├── simple_json_data_php_8_3_with_custom_namespace_root_class_name_and_strict_types.txt │ │ │ ├── simple_json_data_php_8_3_with_final_classes_and_all_properties_nullable.txt │ │ │ ├── simple_json_data_php_8_3_with_getters_fluent_setters_all_docblocks_extra_new_lines_for_properties_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_3_with_setters_and_from_json_array_method.txt │ │ │ ├── simple_json_data_php_8_3_with_setters_and_from_json_method.txt │ │ │ ├── simple_json_data_php_8_3_without_constructor.txt │ │ │ ├── simple_json_data_php_8_3_without_constructor_and_readonly_classes.txt │ │ │ └── simple_json_data_php_8_3_without_constructor_and_readonly_properties.txt │ │ └── simple_json.txt │ └── json-to-php-converter.spec.ts └── test-utils.ts ├── tsconfig.json └── vite.config.js /.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | postcss.config.js 2 | tailwind.config.js -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | es2021: true 5 | }, 6 | 'extends': [ 7 | 'plugin:vue/vue3-recommended', 8 | 'eslint:recommended', 9 | '@vue/typescript/recommended' 10 | ], 11 | parserOptions: { 12 | ecmaVersion: 2021 13 | }, 14 | rules: { 15 | 'quotes': [2, 'single', { 'avoidEscape': true }], 16 | 'vue/multi-word-component-names': 'off', 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /.github/workflows/deploy-pages.yml: -------------------------------------------------------------------------------- 1 | name: Build and Deploy 2 | on: 3 | push: 4 | branches: 5 | - master 6 | jobs: 7 | build-and-deploy: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout 🛎️ 11 | uses: actions/checkout@v2 12 | with: 13 | persist-credentials: false 14 | 15 | - name: Install and Build 🔧 16 | run: | 17 | npm install 18 | npm run build 19 | 20 | - name: Deploy 🚀 21 | uses: JamesIves/github-pages-deploy-action@releases/v3 22 | with: 23 | ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} 24 | BRANCH: gh-pages 25 | FOLDER: dist 26 | CLEAN: true -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint code 2 | on: [push, pull_request] 3 | jobs: 4 | lint-code: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - name: Checkout 🛎️ 8 | uses: actions/checkout@v2 9 | with: 10 | persist-credentials: false 11 | 12 | - name: Install 🔧 13 | run: | 14 | npm install 15 | 16 | - name: Lint code 🔎 17 | run: | 18 | npm run lint -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test code 2 | on: [push, pull_request] 3 | jobs: 4 | test-code: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - name: Checkout 🛎️ 8 | uses: actions/checkout@v2 9 | with: 10 | persist-credentials: false 11 | 12 | - name: Install 🔧 13 | run: | 14 | npm install 15 | 16 | - name: Test code 🧪 17 | run: | 18 | npm run test-ci -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | coverage 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Jacob de Keizer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JSON to PHP class generator 2 | 3 | Generate PHP classes from json. 4 | 5 | View it [here](https://jacobdekeizer.github.io/json-to-php-generator/). 6 | 7 | ![Screenshot](/screenshots/screenshot.png?raw=true "Screenshot") 8 | 9 | ## Project setup 10 | ``` 11 | npm install 12 | ``` 13 | 14 | ### Compiles and hot-reloads for development 15 | ``` 16 | npm run serve 17 | ``` 18 | 19 | ### Compiles and minifies for production 20 | ``` 21 | npm run build 22 | ``` 23 | 24 | ### Lints and fixes files 25 | ``` 26 | npm run lint 27 | ``` 28 | 29 | ### Test code 30 | ``` 31 | npm run test 32 | ``` 33 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | }; 6 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | JSON to PHP class converter 11 | 12 | 13 | 16 |
17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "php-json-generator", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "vite build", 8 | "serve": "vite serve", 9 | "preview": "vite preview", 10 | "lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore --fix src", 11 | "test": "vitest", 12 | "test-ci": "vitest run --coverage.enabled --coverage.reporter='text-summary'", 13 | "coverage": "vitest run --coverage" 14 | }, 15 | "dependencies": { 16 | "change-case": "^5.4.3", 17 | "jszip": "^3.10.1", 18 | "prismjs": "^1.29.0", 19 | "tailwindcss": "^3.2.7", 20 | "vue": "^3.2.37", 21 | "vue-router": "^4.1.5" 22 | }, 23 | "devDependencies": { 24 | "@types/node": "^20.11.25", 25 | "@types/prismjs": "^1.26.0", 26 | "@typescript-eslint/eslint-plugin": "^7.1.1", 27 | "@typescript-eslint/parser": "^7.1.1", 28 | "@vitejs/plugin-vue": "^5.0.4", 29 | "@vitest/coverage-v8": "^1.3.1", 30 | "@vue/eslint-config-typescript": "^12.0.0", 31 | "autoprefixer": "^10.4.13", 32 | "eslint": "^8.23.0", 33 | "eslint-plugin-vue": "^9.4.0", 34 | "happy-dom": "^13.6.2", 35 | "node-sass": "^9.0.0", 36 | "postcss": "^8.4.21", 37 | "postcss-import": "^16.0.1", 38 | "sass": "^1.58.3", 39 | "typescript": "^5.0.4", 40 | "vite": "^5.1.5", 41 | "vitest": "^1.3.1" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | const autoprefixer = require('autoprefixer'); 2 | const tailwindcss = require('tailwindcss'); 3 | 4 | module.exports = { 5 | plugins: [ 6 | tailwindcss, 7 | autoprefixer, 8 | ], 9 | }; 10 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacobdekeizer/json-to-php-generator/116353990cf21edf8b25814d998d30822311c4e7/public/favicon.ico -------------------------------------------------------------------------------- /screenshots/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacobdekeizer/json-to-php-generator/116353990cf21edf8b25814d998d30822311c4e7/screenshots/screenshot.png -------------------------------------------------------------------------------- /src/@types/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | declare module '*.vue' { 3 | import type { DefineComponent } from 'vue'; 4 | const component: DefineComponent<{}, {}, any>; 5 | export default component; 6 | } -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacobdekeizer/json-to-php-generator/116353990cf21edf8b25814d998d30822311c4e7/src/assets/logo.png -------------------------------------------------------------------------------- /src/assets/scss/theme.scss: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | 3 | @tailwind components; 4 | 5 | @tailwind utilities; 6 | 7 | @import "prism_theme"; -------------------------------------------------------------------------------- /src/components/Alert.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /src/components/Card.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/Code.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 60 | -------------------------------------------------------------------------------- /src/components/Footer.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 22 | -------------------------------------------------------------------------------- /src/components/buttons/IconButton.vue: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /src/components/form/Checkbox.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /src/components/form/FormGroup.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /src/components/form/Label.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /src/components/form/Select.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | 41 | -------------------------------------------------------------------------------- /src/components/form/TextArea.vue: -------------------------------------------------------------------------------- 1 |