Доля констант между PHP и JavaScript

Возможный дубликат:
Передайте строку PHP переменной Javascript (и избегайте новых строк)

У меня есть несколько констант в приложении PHP, которое я разрабатываю. Я определил класс Constants и определил константы как const VAR_NAME = значение; в этом классе. Я хотел бы поделиться этими константами между моим JavaScript и PHP-кодом. Есть ли механизм СУХОЙ (не повторять сам), чтобы делиться ими?

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

    Я бы использовал json_encode . Сначала вам нужно преобразовать класс в ассоциативный массив.

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

    Вы также можете использовать отражение, чтобы преобразовать класс в ассоциативный массив, если вы предпочитаете использовать класс.

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

    Поместите список констант, общих для JavaScript и PHP, в «client_server_shared.js».

    «var» требуется в JavaScript и является законным (хотя и устаревшим) в PHP, если внутри класса. '$', чтобы начать имя переменной, требуется в PHP и легально в JavaScript.

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

    Код 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; 

    Код JavaScript:

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

    Единственный способ, которым вы можете поделиться константами, – это указать стороне php javascript. Например:

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

    Или используя ajax, вы также можете написать небольшой скрипт, который вернет константы как JSON / что угодно.

    Немного уродливого взлома, но вот он идет:

    constants.js

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

    constants.html (использовать внутри JavaScript)

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

    constants.php (использование внутри PHP)

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