Source of file WorkerMutationTrait.php
Size: 3,163 Bytes - Last Modified: 2021-01-12T22:04:13+00:00
C:/Users/MAKS/Code/_PROJECTS/amqp-agent/src/Worker/WorkerMutationTrait.php
| 12345678910111213141516171819202122232425262728293031323334 
                                Covered by 15 test(s):
                            353637383940414243444546 
 
                                Covered by 4 test(s):
                            474849505152535455565758 
 
                                Covered by 17 test(s):
                            59 
 
                                Covered by 17 test(s):
                            6061 
 
                                Covered by 17 test(s):
                            62 
 
                                Covered by 17 test(s):
                            63 
 
                                Covered by 4 test(s):
                            64 
 
                                Covered by 4 test(s):
                            6566 
 
                                Covered by 4 test(s):
                            6768 
 
                                Covered by 4 test(s):
                            69 
 
                                Covered by 4 test(s):
                            7071 
 
                                Covered by 4 test(s):
                            727374 
 
                                Covered by 15 test(s):
                            75 
 
                                Covered by 15 test(s):
                            7677 
 
                                Covered by 2 test(s):
                            7879 
 
                                Covered by 15 test(s):
                            80 
 
                                Covered by 2 test(s):
                            8182 
 
                                Covered by 15 test(s):
                            8384858687 
 
                                Covered by 17 test(s):
                            88 
 
                                Covered by 17 test(s):
                            89 
 
                                Covered by 17 test(s):
                            90 
 
                                Covered by 17 test(s):
                            919293 
 
                                Covered by 17 test(s):
                            949596 
 | <?php/** * @author Marwan Al-Soltany <MarwanAlsoltany@gmail.com> * @copyright Marwan Al-Soltany 2020 * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */declare(strict_types=1); namespace MAKS\AmqpAgent\Worker; /** * A trait containing the implementation of members mutation functions. * @since 1.0.0 */trait WorkerMutationTrait {/**      * The last mutation happened to a class member (for debugging purposes).     * @var array     */protected $mutation = []; /**      * Mutates a subset of an array (class property) and returns the replaced subset.     * @param string $member The name of the property.     * @param array $overrides An associative array of the overrides.     * @return array     */protected function mutateClassMember(string $member, array $overrides): array { return $this->mutateClass($member, null, $overrides); } /**      * Mutates a subset of an array inside a class property (nested array inside a property) and returns the replaced subset.     * @param string $member The name of the property.     * @param string $sub The key which under the array stored.     * @param array $overrides An associative array of the overrides.     * @return array     */protected function mutateClassSubMember(string $member, string $sub, array $overrides): array { return $this->mutateClass($member, $sub, $overrides); } /**      * Mutates a class property nested or not and returns the replaced subset.     * @param string $member The name of the property.     * @param string|null $sub [optional] The key which under the array stored.     * @param array $overrides An associative array of the overrides.     * @return array     */private function mutateClass(string $member, ?string $sub, array $overrides): array { $changes = []; $signature = '@UNKNOWN[%s]'; foreach ($overrides as $key => $value) { if ($sub) { if (isset($this->{$member}[$sub][$key])) { $changes[$key] = $this->{$member}[$sub][$key]; } else { $changes[$key] = sprintf($signature, $key); } if ($value === sprintf($signature, $key)) { unset($this->{$member}[$sub][$key]); } else { $this->{$member}[$sub][$key] = $value; } } else { if (isset($this->{$member}[$key])) { $changes[$key] = $this->{$member}[$key]; } else { $changes[$key] = sprintf($signature, $key); } if ($value === sprintf($signature, $key)) { unset($this->{$member}[$key]); } else { $this->{$member}[$key] = $value; } } } $this->mutation = [ 'member' => $member, 'old' => $changes, 'new' => $overrides, ]; return $changes; } } |