Conceptualmente, es incorrecto que el padre, desde que "nace" ya conozca a sus hijos. La herencia debes entenderla como una relación de generalización/especialización y no como si fueran nodos de HTML en el que <table> es "hijo" de <body>.
La clase padre y la clase hija comparten la misma esencia, pero la hija es más específica. En tu caso, no ocurre eso. <input> no es un tipo particular de <form>. Más bien <form> es un contenedor de <inputs>.
La relación que hay entre los dos objetos es de composición y no de herencia. Si le quitas el "extends" no pasa nada.
Clase Uno:
Maneja varias instancias de Dos. Pero ¿Qué maneja exactamente?
- Crea instancias de Dos y las almacena.
- Puede cambiar el valor de cualquiera de ellas.
Desde ahí, ya vemos que necesitas dos métodos (que ya los tienes). Simplemente habría que ajustar cambiaAtributo(). Y le tienes que decir qué atributo cambiar y cuál será el nuevo valor.
Código PHP:
function cambiaAtributo($nombre, $nuevo_valor){
$this->elementos[$nombre] = $nuevo_valor;
}
Claro, que primero tienes que comprobar que exista un elemento con ese nombre.
Saludos,