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 );