constants - PHP में गतिशील स्थिर नाम



indirection (4)

मैं गतिशील रूप से एक स्थिर नाम बनाने की कोशिश कर रहा हूं और फिर मूल्य प्राप्त कर सकता हूं।

define( CONSTANT_1 , "Some value" ) ;

// try to use it dynamically ...
$constant_number = 1 ;
$constant_name = ("CONSTANT_" . $constant_number) ;

// try to assign the constant value to a variable...
$constant_value = $constant_name;

लेकिन मुझे लगता है कि $ निरंतर मूल्य में अभी भी NAME की स्थिरांक है, और VALUE नहीं है।

मैंने अप्रत्यक्ष स्तर के दूसरे स्तर की कोशिश की $$constant_name लेकिन यह एक चर नहीं एक निरंतर बना देगा।

क्या कोई इस पर कुछ प्रकाश डाल सकता है?


Answers

http://dk.php.net/manual/en/function.constant.php

echo constant($constant_name);

अपनी कक्षा में गतिशील स्थिर नामों का उपयोग करने के लिए आप प्रतिबिंब सुविधा (php5 के बाद से) का उपयोग कर सकते हैं:

$thisClass = new ReflectionClass(__CLASS__);
$thisClass->getConstant($constName);

उदाहरण के लिए: यदि आप वर्ग में केवल विशिष्ट (SORT_ *) स्थिरांक को फ़िल्टर करना चाहते हैं

class MyClass 
{
    const SORT_RELEVANCE = 1;
    const SORT_STARTDATE = 2;

    const DISTANCE_DEFAULT = 20;

    public static function getAvailableSortDirections()
    {
        $thisClass = new ReflectionClass(__CLASS__);
        $classConstants = array_keys($thisClass->getConstants());

        $sortDirections = [];
        foreach ($classConstants as $constName) {
            if (0 === strpos($constName, 'SORT_')) {
                $sortDirections[] =  $thisClass->getConstant($constName);
            }
        }

        return $sortDirections;
    }
}

var_dump(MyClass::getAvailableSortDirections());

परिणाम:

array (size=2)
  0 => int 1
  1 => int 2

और यह प्रदर्शित करने के लिए कि यह वर्ग स्थिरांक के साथ भी काम करता है:

class Joshua {
    const SAY_HELLO = "Hello, World";
}

$command = "HELLO";
echo constant("Joshua::SAY_$command");

नल coalescing ऑपरेटर (??)

isset() के साथ संयोजन में एक टर्नरी ऑपरेटर का उपयोग करने की आवश्यकता के सामान्य मामले के लिए यह ऑपरेटर PHP 7.0 में जोड़ा गया है। यदि यह अस्तित्व में है और यह पूर्ण नहीं है तो यह अपना पहला ऑपरेंड देता NULL ; अन्यथा यह अपना दूसरा ऑपरेंड देता है।

<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>




php constants indirection