¿Objetos parecidos a Javascript en PHP?

Tengo una pregunta. Es bastante útil en JS para crear objects como este:

test = { foo : { bar : "hello world" }, bar2 : "hello world 2" } 

y luego usarlos como

 test.foo.bar test.bar2 

¿Hay algo como esto en PHP sin declarar classs?

8 Solutions collect form web for “¿Objetos parecidos a Javascript en PHP?”

stdClass le permite crear (esencialmente) objects sin tipo. Por ejemplo:

 $object = (object) array( 'name' => 'Trevor', 'age' => 42 ); 

Como se muestra aquí, la manera más rápida de crear un object stdClass es lanzar una matriz asociativa. Para niveles múltiples, simplemente haz lo mismo dentro de esta manera:

 $object = (object) array( 'name' => 'Trevor', 'age' => '42', 'car' => (object) array( 'make' => 'Mini Cooper', 'model' => 'S', 'year' => 2010 ) ); 

Otro método es convertir la matriz asociativa a un object luego con una function recursiva. Aquí hay un ejemplo.

 function toObject(array $array) { $array = (object) $array; foreach ($array as &$value) if (is_array($value)) $value = toObject($value); return $array; } // usage: $array = // some big hierarchical associative array... $array = toObject($array); 

Esto es útil cuando no eres el que hace la matriz asociativa.

Desafortunadamente, aunque PHP 5.3 admite methods anónimos, no puede poner un método anónimo en stdClass (aunque puede poner uno en una matriz asociativa). Pero esto no es tan malo de todos modos; si quieres funcionalidad, realmente deberías crear una class.

Se llama matrices asociativas.

Ejemplo (nota: la sangría es para propósitos de layout):

 $test = array( 'foo' => array( 'bar' => 'hello world' ), 'bar2' => 'hello world 2' ); $test['foo']['bar']; $test['bar2']; 

Esto es equivalente al siguiente código Javascript:

 var test = { 'foo': { 'bar': 'hello world', }, 'bar2': 'hello world 2' }; 

Como alternativa, puede usar StdClass preestablecido.

 $test = new StdClass; $test->foo = new StdClass; $test->foo->bar = 'hello world'; $test->bar2 = 'hello world 2'; 

que se escribiría en JavaScript como:

 var test = new Object; test.foo = new Object; test.foo.bar = 'hello world'; test.bar2 = 'hello world 2'; 

(nota: el new Object es lo mismo que {} en Javascript)

Puede usar un object StdClass o un ArrayObject que están incluidos en php (aunque este último requiere que tenga SPL instalado). Aunque, a less que necesite acceder a los valores específicamente con el operador -> , es más eficiente usar una matriz asociativa.

Creo que lo que estás buscando es una Associative Array

 $test["foo"]["bar"] 

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=keyed+arrays

Lo más parecido sería arreglos.

 $test = array( 'foo' => array('bar' => 'hello world'), 'bar2' => 'hello world 2', ); echo $test['foo']['bar']; 

Técnicamente, no. Sin embargo, si está creando un object de datos (es decir, sin methods), podría técnicamente escribir una cadena JSON y usar

 $obj = json_decode($obj_string); 

No lo recomendaría sin embargo. Supongo que habrá una pérdida de velocidad significativa.

EDITAR Aunque no hace falta mencionar, las matrices asociativas se deben usar para esto en lugar de objects de datos planos.

La única razón para hacerlo es si desea pasar los datos a una function de JavaScript con JSON. En ese caso, use json_encode en la matriz. De lo contrario, simplemente mantenlo como una matriz, ya que no hay razón para codificarlo y decodificarlo para que parezca JavaScript.

Pruebe de esta manera: https://github.com/ptrofimov/jslikeobject

El autor implementó objects similares a JS, incluso puede acceder a properties desde funciones a través de $ este puntero.

Pero tal vez no sea tan bueno usar tales objects en lugar de los usuales.

  • $ _POST array vacío
  • Filtrar la list de PHP con angularJS
  • PHP Javascript Single Form Call Somete a dos forms
  • Pasar la variable de Javascript a PHP usando Ajax
  • ¿Cómo acceder a las variables de session de PHP desde la function jQuery en un file .js?
  • Validación del lado del cliente Javascript o PHP del lado del servidor
  • SWFUpload es posible cargar múltiples files en una sola ejecución de script php
  • Cambiar el contenido entre un DIV todos los días
  • Pasar matriz PHP a Javascript a través de JSON para actualizar Google Chart
  • Llamada AJAX sensible al context en un sitio modular
  • Combine los puertos php jQuery y Zen-Coding para emular el estilo de progtwigción del lado del cliente en los scripts del lado del server.
  • Ejecute imap_close no funcionando
  • Agregar capas de security para evitar que AJAX botting tanto como sea posible
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.