From dad8707e06a94833952d9d6f5fdd17eca02802cd Mon Sep 17 00:00:00 2001 From: mscherer Date: Mon, 1 Jan 2024 13:37:48 +0100 Subject: [PATCH 1/4] Enum update --- en/orm/database-basics.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/en/orm/database-basics.rst b/en/orm/database-basics.rst index 7ccd4b4d73..e3cb8a4365 100644 --- a/en/orm/database-basics.rst +++ b/en/orm/database-basics.rst @@ -479,8 +479,8 @@ Where ``ArticleStatus`` contains something like:: enum ArticleStatus: string { - case PUBLISHED = 'Y'; - case UNPUBLISHED = 'N'; + case Published = 'Y'; + case Unpublished = 'N'; } .. _adding-custom-database-types: From dfa169bb7cdbc750584686046c63f995698d7fda Mon Sep 17 00:00:00 2001 From: mscherer Date: Mon, 1 Jan 2024 13:47:38 +0100 Subject: [PATCH 2/4] Add conventions --- en/orm/database-basics.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/en/orm/database-basics.rst b/en/orm/database-basics.rst index e3cb8a4365..e4542470b0 100644 --- a/en/orm/database-basics.rst +++ b/en/orm/database-basics.rst @@ -485,6 +485,12 @@ Where ``ArticleStatus`` contains something like:: .. _adding-custom-database-types: +Recommendation: Use a tinyint/smallint type here. + +Conventions for enums: +- The case is ``CamelCase``. +- Use `{Entity}{ColumnName}` as enum name to auto-map during baking to your baked (form) fields. + Adding Custom Types ------------------- From 8604a4a782e2cd7f156626ac3c75401da684ae8c Mon Sep 17 00:00:00 2001 From: mscherer Date: Mon, 1 Jan 2024 14:58:14 +0100 Subject: [PATCH 3/4] Add conventions --- en/contributing/cakephp-coding-conventions.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/en/contributing/cakephp-coding-conventions.rst b/en/contributing/cakephp-coding-conventions.rst index 4b764eff17..f690c69264 100644 --- a/en/contributing/cakephp-coding-conventions.rst +++ b/en/contributing/cakephp-coding-conventions.rst @@ -569,6 +569,16 @@ underscore character, for example:: define('LONG_NAMED_CONSTANT', 2); +Enums +----- +Enum cases are defined in ``CamelCase`` style:: + + enum ArticleStatus: string + { + case Published = 'Y'; + case NotPublishedYet = 'N'; + } + Careful when using empty()/isset() ================================== From 3050e78649cd8474e35ab66ceef9b235492a1829 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Thu, 4 Jan 2024 13:07:23 -0500 Subject: [PATCH 4/4] Tweak wording and update conventions docs for enums --- en/contributing/cakephp-coding-conventions.rst | 1 + en/intro/conventions.rst | 4 ++++ en/orm/database-basics.rst | 10 +++++----- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/en/contributing/cakephp-coding-conventions.rst b/en/contributing/cakephp-coding-conventions.rst index f690c69264..3f04fb3283 100644 --- a/en/contributing/cakephp-coding-conventions.rst +++ b/en/contributing/cakephp-coding-conventions.rst @@ -571,6 +571,7 @@ underscore character, for example:: Enums ----- + Enum cases are defined in ``CamelCase`` style:: enum ArticleStatus: string diff --git a/en/intro/conventions.rst b/en/intro/conventions.rst index a2bf72cee2..7a98cf25c2 100644 --- a/en/intro/conventions.rst +++ b/en/intro/conventions.rst @@ -114,6 +114,10 @@ Entity class names are singular CamelCased and have no suffix. ``User``, matching the ``users``, ``menu_links`` and ``user_favorite_pages`` tables respectively. +Enum class names should use a ``{Entity}{Column}`` convention, and enum cases +should use CamelCased names. + + View Conventions ================ diff --git a/en/orm/database-basics.rst b/en/orm/database-basics.rst index e4542470b0..402f9ecd8b 100644 --- a/en/orm/database-basics.rst +++ b/en/orm/database-basics.rst @@ -483,13 +483,13 @@ Where ``ArticleStatus`` contains something like:: case Unpublished = 'N'; } -.. _adding-custom-database-types: +CakePHP recommends a few conventions for enums: -Recommendation: Use a tinyint/smallint type here. +- Enum classnames should follow ``{Entity}{ColumnName}`` style to enable + detection while running bake and to aid with project consistency. +- Enum cases should use CamelCase style. -Conventions for enums: -- The case is ``CamelCase``. -- Use `{Entity}{ColumnName}` as enum name to auto-map during baking to your baked (form) fields. +.. _adding-custom-database-types: Adding Custom Types -------------------