¿Qué estás haciendo? Ninguna estructura es mejor en todo, y esa es la razón por la cual ambas existen. Por lo tanto, realmente depende de su conjunto de problemas que es "mejor". E incluso entonces, puede ser simplemente un caso que prefiera. Una gran cantidad de arquitectura y diseño de código son las preferencias personales y el estilo.
Ahora, en general, solo hay una vez que usaría un objeto sin método (stdclass
, o uno definido a medida) sobre una matriz. Eso es si necesito pasar esos datos por mucho y modificarlos en varios lugares. Con una matriz, tendrá que pasarla por referencia, lo que se vuelve engorroso y puede introducir fuentes de error ... Con un objeto, se pasa como una referencia de objeto por defecto (no una referencia de variable, sino un puntero al mismo objeto). Así que con un arsenal que había necesidad de hacer algo como:
function doSomething($inVar, array &$inOutArray) {
$inOutArray['bar'] = 'baz';
}
Para cada función que modifica (o pudiera modificar) la matriz.
Mientras que con un objeto, sólo podía hacer:
function doSomething($inVar, $object) {
$object->bar = 'baz';
}
Es más corto (Seguro, sólo un carácter, pero es un personaje en todas partes es posible que desee modificar la matriz). Es menos propenso a errores, ya que si posteriormente se hace $object = new Something()
, no va a cambiar el objeto original (ya que no es una referencia variable) ...
El único argumento es que es un poco menos fácil de leer, ya que los espectáculos &
explícitamente que tiene la intención de modificar esa variable de entrada. Pero si entiendes cómo funcionan los objetos en PHP 5, no deberías ser tomado por sorpresa (y por lo tanto es una solución aceptable en mi mente) ...
¿Por qué dices 1 es mejor que 2? Yo personalmente no estoy de acuerdo con esa declaración. ¿Puedes explicar por qué crees que 1 es mejor que 2? ¿Estamos hablando de eficiencia, consumo de memoria, práctica de codificación? Eche un vistazo a: http://particletree.com/notebook/object-oriented-php-memory-concerns/ también. – Chris
Solo un consejo: quizás las matrices consumen menos recursos. – fabrik
@Chris: Creo que leí en alguna parte que si necesita una estructura para almacenar datos, entonces 1 es la mejor forma de hacerlo. –