notion-php-sdk
notion-php-sdk copied to clipboard
Properties array key generation method change
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