Metodos magicos get set call en el lenguaje PHP PDF

Title Metodos magicos get set call en el lenguaje PHP
Author emilio javier rivas
Course Programación
Institution Universidad de Granada
Pages 3
File Size 132 KB
File Type PDF
Total Downloads 2
Total Views 136

Summary

resumen de la funcionalidad de los métodos mágicos en PHP, y ejemplos de uso en paradigma de orientación a objeto, planteamiento de cómo deben ser usados estos métodos mágicos...


Description

Utilidad de los método mágicos __get, __set y __call de PHP Realizado por EMILIO JAVIER RIVAS FERNÁNDEZ GRUPO PW1 2021

La primera pregunta es ¿QUÉ SON LOS MÉTODOS MÁGICOS DE PHP?. De lo que se trata en este caso es de métodos que son invocados automáticamente (ante ciertos sucesos o eventos). Nos ayudan a realizar ciertas tareas de la POO. Un método mágico es un método que es llamado en un objeto sin que nosotros lo llamemos explícitamente. Por ejemplo, tenemos el método mágico __construct dentro de las clases; nosotros no lo llamamos así, sino que se llama automáticamente cuando creamos una nueva instancia del mismo con new. Estos métodos mágicos en PHP sirven para muchas cosas, porque nos permiten saber cuándo un programador está interactuando con un objeto; pudiendo hacer muchas cosas antes o después. Su funcionalidad la define el programador haciendo una sobrecarga del mismo. La lista completa de métodos mágicos se puede consultar: https://www.php.net/manual/es/language.oop5.magic.php La principal característica que tienen estos métodos es que sus nombres comienzan con __ (doble underscore). Así que PHP se reserva todos los nombres de los métodos que comienzan con __ como mágicos. Además se recomienda que no se utilicen los nombres de métodos con __ en PHP a menos que desee alguna funcionalidad mágica documentada. SUPONEMOS UNA CLASE class Miclase { private $id=1; private $text; public function __construct ($id, $text){ $this->id = $id; $this->text = $text; } private function miMetodoPrivado($nuevoTexto){ $this-> id++; $this->text = $nuevoTexto; } }

Método __get: Cuando se trabaja con objetos, las propiedades pueden ser accedidas de esta forma si son public: $objeto = new Miclase(54, "Hola que tal"); echo $objeto->text;

Pero en la práctica las propiedades lo normal y aconsejable es que sean protected o private, por lo que no podemos acceder a ellas de esa forma. Cuando obtenemos una propiedad del objeto. Por ejemplo, $objeto->text. El método mágico __get() permite poder acceder a estas propiedades inaccesibles (protegidas o privadas) o inexistentes. La forma de hacerlo es sobrecargando a __get con la funcionalidad que quieras que devuelva para esa propiedad dentro de la definición de la clase: Ejemplo de definición de función __get: public function __get($property){ if(property_exists($this, $property)) { return $this->$property; } } En este caso si la propiedad que se pasa por parámetro existe, devuelve el contenido, es decir, si se llama de la forma echo $objeto->text; , internamente php llama a __get del objeto con $property valor text. Por lo que el resultado sería: $objeto = new Miclase(54, "Hola que tal"); echo $objeto->text; // imprime "Hola que tal" siendo text private

Método __set: Si lo que quieres es establecer una propiedad que no es accesible, puedes insertar un método __set(). Este método coge la propiedad a la cual intentabas acceder y el valor que intentabas establecer como sus dos argumentos. Es el equivalente al __get pero en vez de devolver un valor lo que se hace es modificar la propiedad, y es llamada de la siguiente forma: $objeto->text = "Estableciendo un texto"; Ejemplo de definición de una función __set: public function __set($property, $value){ if(property_exists($this, $property)) { $this->$property = $value; } } Internamente php detecta que existe un __set en el objeto y le pasa los parámetros $property =text , $value="Estableciendo un texto". Asignándolo a valor de la propiedad del objeto. Por lo que el resultado sería: $objeto->text = "Estableciendo un texto"; echo $objeto->text; // Devuelve: "Estableciendo un texto"

Método __call: El método __call() se activa cuando se intenta llamar a un método que no es accesible públicamente. Si tenemos un array de datos en el objeto que queremos mutar antes de devolver: Ejemplo de definición de una función __call: public function __call($method, $parameters){ if (in_array($method, array(' miMetodoPrivado'))){ return call_user_func_array(array($this, $method), $parameters); } } La función miMetodoPrivado es un método privado. Con la función __call() podemos acceder a él y opcionalmente pasarles parámetros con call_user_func_array(). En el in_array se pueden añadir tantos métodos como se deseen gestionar. Por lo que el resultado sería: $objeto-> miMetodoPrivado ("modifico id"); echo $objeto->text;//Devuelve: "modifico id" WEBS DE CONSULTA: https://www.php.net/manual/es/language.oop5.magic.php https://styde.net/uso-de-metodos-magicos-enphp/#:~:text=Los%20m%C3%A9todos%20m%C3%A1gicos%20m%C3%A1gicos%20los,autom%C3 %A1ticamente%20cuando%20ocurre%20una%20condici%C3%B3n. https://platzi.com/tutoriales/1338-php/4753-todo-sobre-metodos-magicos-en-php/...


Similar Free PDFs