dynamic class names in php

前端 未结 7 1608
-上瘾入骨i
-上瘾入骨i 2020-12-07 00:31

I have a base class called field and classes that extend this class such as text, select, radio, checkbox, <

相关标签:
7条回答
  • 2020-12-07 01:09

    Spent some time figuring this out. From PHP documentation Namespaces and dynamic language features:

    Note that because there is no difference between a qualified and a fully qualified Name inside a dynamic class name, function name, or constant name, the leading backslash is not necessary.

    namespace namespacename;
    class classname
    {
        function __construct()
        {
            echo __METHOD__,"\n";
        }
    }
    function funcname()
    {
        echo __FUNCTION__,"\n";
    }
    const constname = "namespaced";
    
    /* note that if using double quotes, "\\namespacename\\classname" must be used */
    $a = '\namespacename\classname';
    $obj = new $a; // prints namespacename\classname::__construct
    $a = 'namespacename\classname';
    $obj = new $a; // also prints namespacename\classname::__construct
    
    $b = 'namespacename\funcname';
    $b(); // prints namespacename\funcname
    $b = '\namespacename\funcname';
    $b(); // also prints namespacename\funcname
    
    echo constant('\namespacename\constname'), "\n"; // prints namespaced
    echo constant('namespacename\constname'), "\n"; // also prints namespaced
    
    0 讨论(0)
提交回复
热议问题