src/Entity/Traits/ImplementNotifyChangeTrackingPolicy.php
public function notifyEmbeddablePrefixedProperties(
        string $embeddablePropertyName,
        ?string $propName = null,
        $oldValue = null,
        $newValue = null
    ): void {
        if ($oldValue !== null && $oldValue === $newValue) {
            return;
        }
        /**
         * @var ClassMetadata $metaData
         */
        $metaData = self::getDoctrineStaticMeta()->getMetaData();
        foreach ($metaData->getFieldNames() as $fieldName) {
            if (true === \ts\stringStartsWith($fieldName, $embeddablePropertyName)
                && false !== \ts\stringContains($fieldName, '.')
            ) {
                if ($fieldName !== null && $fieldName !== "$embeddablePropertyName.$propName") {
                    continue;
                }
                foreach ($this->notifyChangeTrackingListeners as $listener) {
                    //wondering if we can get away with not passing in the values?
                    $listener->propertyChanged($this, $fieldName, $oldValue, $newValue);
                }
            }
        }
    }
public function notifyEmbeddablePrefixedProperties(
        string $embeddablePropertyName,
        ?string $propName = null,
        $oldValue = null,
        $newValue = null
    ): void {
        if ($oldValue !== null && $oldValue === $newValue) {
            return;
        }
        /**
         * @var ClassMetadata $metaData
         */
        $metaData = self::getDoctrineStaticMeta()->getMetaData();
        foreach ($metaData->getFieldNames() as $fieldName) {
            if (true === \ts\stringStartsWith($fieldName, $embeddablePropertyName)
                && false !== \ts\stringContains($fieldName, '.')
            ) {
                if ($fieldName !== null && $fieldName !== "$embeddablePropertyName.$propName") {
                    continue;
                }
                foreach ($this->notifyChangeTrackingListeners as $listener) {
                    //wondering if we can get away with not passing in the values?
                    $listener->propertyChanged($this, $fieldName, $oldValue, $newValue);
                }
            }
        }
    }
public function notifyEmbeddablePrefixedProperties ( string $ embeddablePropertyName , ? string $ propName = null , $ oldValue = null , $ newValue = null ) : void { if ( $ oldValue !== null && $ oldValue === $ newValue ) { return ; } /**
         * @var ClassMetadata $metaData
         */ $ metaData = self :: getDoctrineStaticMeta ( ) -> getMetaData ( ) ; foreach ( $ metaData -> getFieldNames ( ) as $ fieldName ) { if ( true === \ ts \ stringStartsWith ( $ fieldName , $ embeddablePropertyName ) && false !== \ ts \ stringContains ( $ fieldName , '.' ) ) { if ( $ fieldName !== null && $ fieldName !== "$embeddablePropertyName.$propName" ) { continue ; } foreach ( $ this -> notifyChangeTrackingListeners as $ listener ) { //wondering if we can get away with not passing in the values? $ listener -> propertyChanged ( $ this , $ fieldName , $ oldValue , $ newValue ) ; } } } }
This notifies the embeddable properties on the owning Entity

@param string      $embeddablePropertyName
@param null|string $propName
@param null        $oldValue
@param null        $newValue
This notifies the embeddable properties on the owning Entity