Cita:
Iniciado por jcd sé que PHP no soporta la sobrecarga pero puede simularse, entiendo, o eso creo, el concepto de polimorfismo pero la sobrecarga me da problemas.
Quiero generar un método que dependiendo del número de parámetros que le pase me ejecuta uno u otro codigo, y quiero hacer 5 casos, si acepta dos parámetros, me da la suma, si acepta tres el producto, si acepta cuatro la suma 2 a 2 y la división...etc.
Eso no es polimorfismo, y, por lo tanto, tampoco sobrecarga.Son distintos métodos que lo único que tienen que ver los unos con los otros, es que quieres que se llamen igual.
Sobrecarga es cuando quieres realizar la *misma* acción sobre diferentes tipos de datos, especialmente, cuando dichos tipos tienen una clase base común.Pero lo importante es que la acción sea semánticamente la misma.La suma, la división, la multiplicación, no son lo mismo.
Cita:
Iniciado por jcd 1) según mi codigo, en realidad estoy haciendo 5 métodos distintos con 5 nombres distinos, cuando lo que quiero es que se llamen igual.
Según tu código, ya están en un método que se "llaman igual".. _call.
Cita:
Iniciado por jcd 2)se supone que cuando isntancie al método, en ese momento es cuando tengo que pasarle los parámetros, y dependiendo de cuántos sean me hará una u otra cosa.
Y ese método..se llama "_call"
Cita:
Iniciado por jcd 3) pongo mi codigo, y me salta el siguiente error:
Fatal error: Call to undefined method miclase::metodo() in C:\xampp\htdocs\loader.php on line 47, no sé porque me lo llama comosi fuera estático.
Porque en tu clase no está definido ese método.Te lo "llama como si fuera estático", porque en PHP no existen métodos de instancia, sólo métodos de clase.Así que, por convención, te lo escribe así.
Cita:
Iniciado por jcd
Código PHP:
Ver original<?php
...
$this-> metodo0;
...
$this-> metodo1;
...
$this-> metodo2;
...
$this-> metodo3;
...
$this-> metodo4;
...
$this-> metodo5;
Esas líneas no creo que estén haciendo nada (digo creo, porque es posible que estén creando variables miembro..quién sabe)