حصة الثوابت بين PHP و جافا سكريبت [مكررة]
-
22-07-2019 - |
سؤال
ممكن مكررة:
تمر PHP السلسلة إلى متغير جافا سكريبت (و الهروب أسطر)
لدي العديد من الثوابت في تطبيق PHP انا النامية.لقد تعريف الثوابت فئة محددة الثوابت كما const VAR_NAME = القيمة ؛ في هذه الفئة.أود أن حصة هذه الثوابت بين جافا سكريبت رمز 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"));
نصائح أخرى
وضع قائمة من الثوابت المشتركة بين كل من جافا سكريبت و PHP في "client_server_shared.js".
فار ' مطلوب في جافا سكريبت و هو قانوني (على الرغم من إهمال) في PHP if داخل الصف.'$' أن يبدأ اسم المتغير المطلوب في PHP و القانونية في جافا سكريبت.
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;
شفرة جافا سكريبت:
alert( $shared_CONSTANT1 ); // Proof it works in JavaScript.
alert( $shared_CONSTANT2 );
الطريقة الوحيدة التي يمكن أن حصة هذه الثوابت هو أن يكون الجانب php إبلاغ جافا سكريبت.على سبيل المثال:
echo "<script> var CONSTANT1 =".$constant_instance->CONSTANT_NAME.";</script>";
أو باستخدام اياكس ، يمكنك أيضا كتابة السيناريو الصغيرة التي سيعود الثوابت كما JSON/أيا كان.
قليلا من الإختراق القبيح, ولكن هنا يذهب:
constants.js
//<?php $const1 = 42; $const2 = "Hello"; //?>
constants.html (استخدام داخل جافا سكريبت)
<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;
?>