¿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.

  • Conmutador de extensión SVG / PNG
  • imprimiendo una cadena PHP y analizándola como un JSON en javascript
  • Mostrar datos recuperados de un menu desplegable
  • Herencia de Prototypal en PHP (como en JavaScript)
  • Comentarios ajax en time real
  • validation de formulario con javascript a php
  • La llamada AJAX no funciona aunque los files PHP y JS funcionen por sí mismos
  • Facebook logout / disconnect FB.login () llamado cuando el usuario ya está conectado
  • Dropdown Haga clic en Datos PHP desde mysql
  • Recomendación de PHP para una gran actividad
  • Cómo llamar a la function de JavaScript en el código php?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.