Protobuf\Extension\ExtensionFieldMap::add PHP Метод

add() публичный Метод

public add ( ExtensionField $extension, mixed $value )
$extension ExtensionField
$value mixed
    public function add(ExtensionField $extension, $value)
    {
        if (!$value instanceof Message) {
            $this->put($extension, $value);
            return;
        }
        $className = get_class($value);
        $existing = isset($this[$extension]) ? $this[$extension] : null;
        if ($existing instanceof $className) {
            $value->merge($existing);
        }
        $this->put($extension, $value);
    }

Usage Example

 public function testAddMergeExtensions()
 {
     $animal1 = new Cat();
     $animal2 = new Cat();
     $callback = function () {
     };
     $extensions = new ExtensionFieldMap(Animal::CLASS);
     $extension = new ExtensionField(Animal::CLASS, 'animal', 100, $callback, $callback, $callback);
     $animal1->setDeclawed(true);
     $extensions->add($extension, $animal1);
     $this->assertSame($animal1, $extensions->offsetGet($extension));
     $animal2->setDeclawed(false);
     $extensions->add($extension, $animal2);
     $this->assertTrue($animal2->getDeclawed());
     $this->assertSame($animal2, $extensions->offsetGet($extension));
 }