Bueno Maycol, si bien el primer intento no estaba del todo mal, ya con el segundo has dado unos pasos para atrás...
Uno de los mejores consejos que me dieron cuando estaba aprendiendo PHP y POO, es que si ves que un método de un objeto te está tomando más de 10 o 15 líneas... entonces que pensara que algo estaba haciendo mal y que viera de separar el metodo en dos o mas. En tu caso, si ves, estás repitiendo el código casi exacto en dos métodos... no te parece extraño ?
no sería mucho pero mucho más sencillo, que calcular2, sea algo como :
Código PHP:
<?php
function calcular2($oper, $valor)
{
return $this->calcular($this->resultado, $oper, $valor);
}
?>
Otro consejo, en POO, antes de escribir código, hay que pensar el doble lo que se va a hacer ANTES.
Otro consejo importante que te puedo dar y que a mi me sirve mucho, es que antes de comenzar a programar un objeto o una clase, es que imagines y pienses que API le vas a dar a ese objeto (o sea, que metodos el objeto queres que tenga, para hacerte el uso sencillo y entendible).
Una de las ventajas increibles que tienen los objetos es que son evolutivos, extensibles... y me parece que tu método "Calcular" hace demasiadas cosas. Yo personalmente, hubiera creado métodos para la suma, la resta, la multiplicacion y la division. Es más, si nos atenemos a la correcta programación de objetos, el método de multiplicacion no serian más que sucesivas llamadas al metodo suma();
Bueno, eso es lo que puedo comentarte de momento, ya sabes, la mejor manera de aprender es practicando, pero en OOP, esto no alcanza, y hay que leer mucho, para escribir poco código.
Saludos.