Estoy estudiando PHP y me surgen algunas dudas. Por ejemplo, no se cómo crear una clase estática. Una clase estática (según tengo entendido) es aquella que no necesita (y no puede) instanciarse ya que sus métodos (todos static) no se aplican a un objeto en particular. Un ejemplo de esto es la clase Math de ActionScript
Yo lo que quiero es crear una clase de utilidades que no tienen cabida en otras clases por separado y que no es plan dejarlas por ahí sueltas.
Bien, esta es mi clase:
Código PHP:
class Utils{
public static function echoln($a){
echo "{$a}<br />";
}
/*
Este método no debería estar,
pues lo que quiero es una clase estática
*/
public function echoln0($a){
echo "{$a}<br />";
}
}
Código PHP:
Utils::echoln("Hello");
$o = new Utils();
$o -> echoln("Hello");
Utils::echoln0("Hola");
La segunda línea ya no me gusta, y es que puede crearse un objeto de la clase sin ningún problema... como no se puede aplicar static a la clase en sí, ¿cómo hago para que no se pueda instanciar? (1)
La tercera línea tampoco me gusta, pues al parecer se puede acceder a un método estático desde un objeto (a un miembro estático no, por ejemplo... eso ya me gusta más)
Y la terce línea... bueno, que me da la sensación de que un método estático y uno que no lo sea (¿dinámico, entonces?) son lo mismo.
Me gustaría que si alguien tiene tiempo y ganas me instruya sobre cómo hacer lo que pretendo (o cómo implementar lo que pretendo pero de otra forma, sin usar una clase estática), si es que es posible en PHP (y que se me corrija si lo que realmente pasa es que confundo conceptos)
(1) - Si defino el constructor de la clase como private, ya no es posible instanciarla (al menos no con el operador new)... pero la verdad es que no me gusta nada esa forma (porqué sí podría ser instanciada de otra manera, y porque el error que devuelve PHP al intentar instanciarla de la manera normal no me parece el adecuado a una clase estática)