Hola laymont, un placer saludarte.
Yendo directo a responder tus inquietudes, te indico a continuación:
1.) ¿ Para poder usar la herencia, las dos (2) clases deben estar en la misma pagina y no como lo muestro (claseA.php y claseB.php)?R: No es necesario, ni obligatorio que las clases se encuentren en archivos distintos, sin embargo, es una buena práctica que cada clase tenga su propio .php. Para ello, debes hacer uso de alguna función como require_once para poder hacer el llamado correspondiente.2.) ¿Cómo impido que se ejecute ingreso y salida si no esta definido el producto, a pesar de que se llame la funcion Ingreso por ejemplo?R: Si entiendo bien tu planteamiento, debes hacer una redefinición de tus clases. Producto debería ser la clase A y sus variables miembros serían: marca, color y tamaño. Ingreso y Salida deberían ser métodos de una segunda clase llamada Inventario (si es que necesitaras trabajar una segunda clase) y que reciban como parámetro un objeto de tipo Producto, en donde puedas darle de alta y baja a las cantidades.
Recomendaciones generales (que vi en este script) POO:
- El uso de var es obsoleto, esto declara como público la variable miembro que estés asignando. Debes usar definir los delimitadores de acceso que correspondan: private, protected o public.
- Aunque si omites los delimitadores de acceso, por defecto toma public, es aconsejable y una buena práctica que los utilices tanto en métodos como en variables.
- Realizar una asignación de tipo dentro del construct, aunque funcione no es lo correcto, para ello tienes la sección donde declaras las variables miembros.
Muestra código corregido y analizado y seguimos la charla.
Que estés bien.