CRM_Utils_Array - All `pathGet()`-like methods will accept empty-path
authorTim Otten <totten@civicrm.org>
Tue, 5 Jul 2022 23:23:36 +0000 (16:23 -0700)
committerTim Otten <totten@civicrm.org>
Tue, 5 Jul 2022 23:23:36 +0000 (16:23 -0700)
commitbbb4b90ad2105a9e07f2767b383c6569b8ab8eac
tree8f39442a79e876e0dc944e5c4218c2fcf0553f48
parentd89639f692d14b7e6ce6f88ce7860ee1dff9d33c
CRM_Utils_Array - All `pathGet()`-like methods will accept empty-path

These two are equivalent:

  (A) $data['sub1']['sub2']['sub3']
  (B) CRM_Utils_Array::pathGet($data, ['sub1', 'sub2', 'sub3'])

But what if the list of subpaths is empty -- ie you're accessing the top-level item?

  (A) $data
  (B) CRM_Utils_Array::pathGet($data, [])

It worked correctly on `pathGet()`, but accessing the top-level using a
related methods (eg `pathSet()`) would generate a PHP error.

This commit ensures that related methods can be used to check/update the
top-level item (ie path===[]).

Note that there is some decent test-coverage already for the regular
scenarios (eg `testGetSetPathParts()`).
CRM/Utils/Array.php
tests/phpunit/CRM/Utils/ArrayTest.php