This repository was archived by the owner on Jun 21, 2022. It is now read-only.
Properties array key generation method change #17
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposal:
Change key generation method from
$this->properties[Str::camel($label)]
to this$this->properties[sha1($label)]
Reason:
_
)_
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 theray
call