12

可能重复:
将 PHP 字符串传递给 Javascript 变量(并转义换行符)

我正在开发的 PHP 应用程序中有几个常量。我定义了一个常量类,并将常量定义为 const VAR_NAME = value; 在这堂课中。我想在我的 JavaScript 和 PHP 代码之间共享这些常量。是否有一个 DRY(不要重复自己)机制来分享它们?

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

4 回答 4

8

我会用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"));
于 2009-01-13T19:51:22.990 回答
2

在“client_server_shared.js”中放置 JavaScript 和 PHP 通用的常量列表。

'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 );
于 2011-07-25T15:37:12.840 回答
-1

您可以共享常量的唯一方法是让 php 端通知 javascript。例如:

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

或者使用 ajax,您还可以编写一个小脚本,将常量作为 JSON/whatever 返回。

于 2009-01-13T19:51:39.010 回答
-2

有点丑陋的黑客,但在这里:

常量.js

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

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;
?>
于 2009-01-13T20:08:27.433 回答