Skip to content
This repository was archived by the owner on Jun 21, 2022. It is now read-only.

Properties array key generation method change #17

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

xpundel
Copy link
Contributor

@xpundel xpundel commented Feb 13, 2022

Proposal:
Change key generation method from $this->properties[Str::camel($label)] to this $this->properties[sha1($label)]

Reason:

  • non-Latin titles are "camelcased" incorrectly
  • some non-letter titles become empty strings (for example: _)
  • thus, different titles have same keys in some cases (for example: _ and __)

If we generate sha1 from the title - we get the unique array key with a fairly high probability.
Now we can refer to properties with their Notion titles: $page->Name, $page->Status, etc.
Also, we can refer to properties with space in title $page->{'Show On Website'} and to non-latin properties: $page->{'Дата просмотра'}

Code style and backward compatibility
To follow code style for latin-letter-named properties case and for providing backward compatibility we store camelcased titles as aliases to sha1-keys. So, the $page->showOnWebsite still works the same as $page->{'Show On Website'}

Testing
Although I checked this on my tables, it's better to be tested additionally ;)

p.s. Added function_exists check for the ray call

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant