352 of 410 menu

Método __call

El método __call es un método mágico en PHP que se llama automáticamente al intentar acceder a un método inexistente o inaccesible de una clase. Como primer parámetro acepta el nombre del método llamado, como segundo - un array de argumentos.

Sintaxis

public function __call(string $name, array $arguments) { // implementación }

Ejemplo

Creemos una clase con el método __call que interceptará todas las llamadas a métodos inexistentes:

<?php class Test { public function __call($name, $args) { echo "Método llamado: " . $name . "\n"; echo "Argumentos: "; print_r($args); } } $test = new Test(); $test->nonExistentMethod('a', 'b', 123); ?>

Resultado de la ejecución del código:

Método llamado: nonExistentMethod Argumentos: ['a', 'b', 123]

Ejemplo

Implementemos un simple delegador de métodos usando __call:

<?php class Calculator { public function add($a, $b) { return $a + $b; } } class Math { private $calculator; public function __construct() { $this->calculator = new Calculator(); } public function __call($name, $args) { if (method_exists($this->calculator, $name)) { return call_user_func_array( [$this->calculator, $name], $args ); } throw new Exception("Método $name no encontrado"); } } $math = new Math(); echo $math->add(2, 3); ?>

Resultado de la ejecución del código:

5

Ver también

  • método __callStatic,
    que intercepta llamadas a métodos estáticos
  • método __get,
    que intercepta accesos a propiedades inexistentes
Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar