notion-php-sdk icon indicating copy to clipboard operation
notion-php-sdk copied to clipboard

Properties array key generation method change

Open xpundel opened this issue 3 years ago • 0 comments

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

xpundel avatar Feb 13 '22 10:02 xpundel