I am not sure what to title this but the gist is that I have two structs with a one way dependency:
// Vector3 type typedef struct Vector3 { float x; float y; float z; } Vector3; // Ray type (useful for raycast) typedef struct Ray { Vector3 position; // Ray position (origin) Vector3 direction; // Ray direction } Ray; I've gone ahead and made a test extension here: https://github.com/joseph-montanez/php-ext-reference-issue . I've made each struct a PHP object. allowing me to do this: <?php $position = new \skeleton\Vector3(1,2,3); $direction = new \skeleton\Vector3(4,5,6); $ray = new \skeleton\Ray($position, $direction); echo 'Z: ', $ray->position->z, PHP_EOL; // Outputs: 3 $position->z = 9; echo 'Z: ', $ray->position->z, PHP_EOL; // Outputs: 9 The PHP Ray object is defined as so: typedef struct _skeleton_ray_object { Ray ray; HashTable *prop_handler; zend_object std; skeleton_vector3_object *position; skeleton_vector3_object *direction; } skeleton_ray_object; When I update either vector3 object, I don't have a way to propagate the changes back to the parent object(Ray). This means the raw Ray struct is never updated. Is there a built-in way to handle propagation (listeners) in a PHP extension or will I need to hand roll this? Thanks, Joseph Montanez