سؤال

ممكن مكررة:
تمر 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;
?>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top