vscode online example error checker php javascript code-generation dry

php - online - prettier typescript



Compartir constantes entre PHP y JavaScript (4)

Posible duplicado:
Pasar una cadena de PHP a una variable de Javascript (y escapar de las nuevas líneas)

Tengo varias constantes en una aplicación de PHP que estoy desarrollando. Definí una clase Constants y definí las constantes como const VAR_NAME = value; en esta clase. Me gustaría compartir estas constantes entre mi código JavaScript y PHP. ¿Hay un mecanismo SECO (No repetirlo) para compartirlos?

class Constants { const RESOURCE_TYPE_REGSITER = 2; const RESOURCE_TYPE_INFO = 1; }


La única forma en que puede compartir las constantes es hacer que el lado php informe al javascript. Por ejemplo:

echo "<script> var CONSTANT1 =".$constant_instance->CONSTANT_NAME.";</script>";

O usando ajax, también podría escribir un pequeño script que devuelva las constantes como JSON / lo que sea.


Un poco feo, pero aquí va:

constants.js

//<?php $const1 = 42; $const2 = "Hello"; //?>

constants.html (usar dentro de JavaScript)

<script type="text/javascript" src="constants.js"></script> <script type="text/javascript">document.write($const1);</script>

constants.php (uso dentro de PHP)

<?php ob_start(); // start buffering the "//" require "constants.js"; ob_end_clean(); // discard the buffered "//" echo $const1; ?>


Yo usaría json_encode . Primero tendrá que convertir la clase a una matriz asociativa.

$constants = array("RESOURCE_TYPE_REGISTER"=>2, "RESOURCE_TYPE_INFO"=>2); echo json_encode($constants);

También podría usar la reflexión para convertir la clase a una matriz asociativa si prefiere usar una clase.

function get_class_consts($class_name) { $c = new ReflectionClass($class_name); return ($c->getConstants()); } class Constants { const RESOURCE_TYPE_REGSITER = 2; const RESOURCE_TYPE_INFO = 1; } echo json_encode(get_class_consts("Constants"));


Ponga una lista de constantes comunes a JavaScript y PHP en "client_server_shared.js".

''var'' es obligatorio en JavaScript, y es legal (aunque obsoleto) en PHP si está dentro de una clase. ''$'' para iniciar un nombre de variable es obligatorio en PHP y legal en JavaScript.

var $shared_CONSTANT1 = 100; var $shared_CONSTANT2 = ''hey'';

Código PHP:

eval(''class Client_server_shared{'' ."/n" . file_get_contents( ''client_server_shared.js'' ) ."/n" . ''}'' . ''$client_server = new Client_server_shared();'' ); echo $client_server->shared_CONSTANT1; // Proof it works in PHP. echo $client_server->shared_CONSTANT2;

Código de JavaScript:

alert( $shared_CONSTANT1 ); // Proof it works in JavaScript. alert( $shared_CONSTANT2 );