Sé que es probable que sea un poco tarde para ti, pero también tuve que solucionar este problema. Para ayudar a otros a entender por qué esto es a veces un requisito, aquí está mi ejemplo:
Estoy construyendo un marco MVC para una aplicación, tengo una clase de controlador base, que se amplía para cada clase de controlador individual. Cada controlador tendrá diferentes métodos, dependiendo de lo que el controlador necesite hacer. Por ejemplo, mysite.com/event cargaría el controlador de eventos. mysite.com/event/create cargará el controlador de eventos y llamará al método 'crear'. Para estandarizar la llamada de la función de creación, necesitamos la clase de controlador base para acceder a los métodos de la clase hija, que será diferente para cada controlador. Así código-sabia, tenemos la clase padre:
class controller {
protected $aRequestBits;
public function __construct($urlSegments) {
array_shift($urlSegments);
$this->urlSegments = $urlSegments;
}
public function RunAction($child) {
$FunctionToRun = $this->urlSegments[0];
if(method_exists($child,$FunctionToRun)) {
$child->$FunctionToRun();
}
}
}
A continuación, la clase hija:
class wordcontroller extends controller {
public function add() {
echo "Inside Add";
}
public function edit() {
echo "Inside Edit";
}
public function delete() {
echo "Inside Delete";
}
}
Así que la solución en mi caso fue a pasar la instancia propio niño de nuevo a la clase padre como una parámetro.
sé que he puesto en marcha nombres de las clases equivocadas, pero esto es sólo un ejemplo, no es algo que voy a poner en práctica en cualquier lugar. – Sarfraz
en una vista lógica, 'pescado' debe ser la clase principal y' ballena' el niño;; – Strae
@DaNieL Una ballena no es un pez. –