Requisito previo: función estática PHP
En PHP, podemos tener clases tanto estáticas como no estáticas (instanciadas).
clase estática
Introducción: una clase estática en PHP es un tipo de clase que se instancia solo una vez en un programa. Debe contener un miembro estático (variable) o una función de miembro estático (método) o ambos. Se accede a las variables y métodos sin la creación de un objeto, utilizando el operador de resolución de ámbito (::). Pero aquí hay un problema, que el método estático no puede acceder a las variables no estáticas porque eso requerirá la creación del objeto primero. Entonces, para acceder a las variables de una clase estática, debemos declararlas como estáticas usando la palabra clave estática .
Ejemplo 1:
<?php class Class_name { // Static variable and static function // using static keyword public static $var = "text"; public static function func() { echo self::$var; } } Class_name::func(); ?>
text
Ejemplo 2: Este ejemplo comprueba si una string creada tiene una longitud mayor o igual a 7 o no.
<?php class GFG { // Static variable public static $num1 = 7; // Static function public static function check($var) { // Accessing static variable using // self keyword if(strlen($var) >= self::$num1) return true; else return false; } } // String is created $str = "GeeksforGeeks"; // Static function is called // using scope resolution operator if(GFG::check($str)) echo "String is valid!"; else echo "String is NOT valid!"; ?>
String is valid!
Clase instanciada (no estática)
Introducción: Instanciar significa crear una instancia de un objeto en la memoria del servidor. Las clases instanciadas son aquellas clases que requieren que se cree un objeto antes de llamar a sus variables y métodos. Es similar a una clase normal utilizada en C++, Java y otros lenguajes de programación. Estas clases se pueden instanciar más de una vez y contienen valores únicos para cada uno de sus objetos.
Ejemplo 1:
<?php class GFG { // non-static variable // and function public $var = "text"; public function func() { echo $this->var; } } $test = new GFG(); $test->func(); ?>
text
Ejemplo 2: Este programa verifica si una longitud de string creada es mayor o igual a 7 o no.
<?php class GFG { // Non-static variable public $num1 = 7; // Non-Static function public function check($var) { if(strlen($var) >= $this->num1) return true; else return false; } } // Object 1 is created $str1 = new GFG(); if ($str1->check("GeeksforGeeks")) echo "String is valid!"; else echo "String is NOT valid!"; // Object 2 is created $str2 = new GFG(); if ($str2->check("Geeks")) echo "String is valid!"; else echo "String is NOT valid!"; ?>
String is valid! String is NOT valid!
Clase estática frente a clase instanciada
- La clase estática se usa para una sola instancia de esa clase, mientras que la clase instanciada se usa cuando se requiere más de una instancia.
- La clase estática contiene variables estáticas y métodos estáticos, mientras que la clase instanciada contiene variables no estáticas y métodos no estáticos.
- Los programas que tienen clases estáticas son difíciles de probar y extender, mientras que los programas con clases no estáticas proporcionan propiedades de prueba y extensión fáciles.
- Los datos se relacionan principalmente con la clase en sí misma en el caso de una clase estática, mientras que en el caso de una clase instanciada, los datos se relacionan con el objeto respectivo, no con la clase en sí.
- La funcionalidad de los métodos y variables de una clase es general (global) .
- Cuando desee que un campo o variable respectivo tenga el mismo valor entre instancias o cuando desee una instancia única de esa clase.
- Al crear un singleton (tipo particular de clase que se puede instanciar solo una vez) o una clase de utilidad (ayudante).
- Cuando cada objeto tiene los mismos datos y requiere crear una clase que solo funcione con estos datos, entonces se puede usar la clase estática.
- No se requieren pruebas (principalmente unidades) o mantenibilidad .
- La funcionalidad de la clase no es global o puede haber más de una instancia de esa clase.
- Cuando cada objeto de la clase tiene sus propios datos únicos (como ID de correo electrónico).
- Se requieren pruebas y mantenibilidad.
¿Cuándo usar qué?
Considere usar la clase estática si alguna de estas declaraciones se aplica a la situación:
Considere usar la clase instanciada si alguna de estas declaraciones se aplica a la situación:
Ejemplo: considere que en el caso de una tienda, las facturas generadas por artículos de compra contienen el nombre de los artículos, el costo de cada artículo, el costo total, la fecha, el nombre de la tienda, el número de tienda registrado, la dirección, etc. Aquí, para diferentes clientes que compran diferentes artículos el valor del nombre del artículo, costo total, fecha, etc será diferente. Entonces, estos se pueden obtener usando una clase instanciada donde cada cliente se representa como un objeto de esa clase y cada objeto tendrá diferentes atributos. Pero el nombre de la tienda, el número de tienda registrado, el costo del artículo respectivo y la dirección serán los mismos para todos los clientes. Entonces, aquí la clase estática se puede usar para instanciar todos estos valores una vez y luego se pueden usar muchas veces.
Publicación traducida automáticamente
Artículo escrito por BhavikBothra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA