Cita:
Iniciado por santhy
Si con "compartidos" te refieres a los estáticos (static function XXXX() ) entonces la diferencia (en teoría) es esta:
una función static test() se llama como NombreClase::test() (y no debe llamarse como $objeto->test(); y que produce un STRICT_ERROR).
Por tanto, es lógico pensar que ocupa menos espacio en memoria, al no necesitar el puntero al objeto implícito $this
Sin embargo, los métodos no-estáticos (como $objeto->test() ) sí necesitan hacer referencia a este puntero.
Además, por cada objeto creado se duplican todas las variables (las funciones creo que no, pero esto no puedo asegurarlo) en el espacio de memoria de cada objeto (pues son distintas para cada objeto); sin embargo, las variables estáticas, en este caso, tampoco son duplicadas.
Espero haberte entendido y aclarado algo
Mmm... tienes idea en el orden de cuanto
"ahorro" estamos hablando de memoria y
por cuanto espacio de tiempo?
Este tipo de "optimizaciones" no tienen sentido. Es como cuando dicen "cada vez que dejo de usar una variable le hago unset".... ¿no es más fácil esperar a que termine la ejecución del PHP?
En "situaciones normales" (no levantar una consulta gigante en un array en memoria y luego recorrerlo) este tipo de "estrategias" no surten ningún efecto y lo que hacen es generar "desastres" a la hora de diseñar sistemas porque ponemos solo énfasis en la "optimización", perdiendo en foco en cumplir con la funcionalidad requerida.
PD: si me dieran un dolar por cada vez que me preguntan sobre "cómo optimizar al extremo el código PHP", sería bastante rico.