سؤال

هكذا أردت أن تفعل ذلك على أن تعمل في PHP 5.3.0+

<?php
    class MyClass
    {
        const CONSTANT = 'Const var';        
    }

    $classname = 'MyClass';
    echo $classname::CONSTANT; // As of PHP 5.3.0
?>

ولكن أنا مقيد باستخدام PHP 5.2.6.أي شخص يمكن أن نفكر في طريقة بسيطة لمحاكاة هذا السلوك دون إنشاء الصف ؟

هل كانت مفيدة؟

المحلول

يمكنك إنجاز هذا دون استخدام eval في مرحلة ما قبل 5.3 رمز.مجرد استخدام constant وظيفة:

<?php

class MyClass
{
    const CONSTANT = 'Const var';
}

$classname = 'MyClass';
echo constant("$classname::CONSTANT");

?>

نصائح أخرى

إذا كنت absolutly تحتاج إلى الوصول المستمر مثل ذلك ، يمكنك القيام بذلك:

<?php
class MyClass
{
        const CONSTANT = 'Const var';
}

$classname = 'MyClass';
echo eval( 'return '.$classname.'::CONSTANT;' );
?>

ولكن إذا كنت تريد حاول عدم استخدام التقييم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top