【问题标题】:PHP: Get class name of passed var?PHP:获取传递的变量的类名?
【发布时间】:2011-01-17 00:55:05
【问题描述】:

我有一个函数可以将一个类作为参数传递给它。我想将传递的类的类名作为字符串获取。

我试着把这个方法放在传递的类中:

function getClassName()
    {
        return __CLASS__;
    }

但是如果类被扩展,我认为这将返回子类的名称,但它仍然返回我觉得有点奇怪的超类的名称。

那么给定一个 $var 作为参数传递给函数,有没有办法获取类名的字符串?

谢谢!!

【问题讨论】:

    标签: php oop php4 classname


    【解决方案1】:

    获取没有命名空间的类名的最简单方法是:

    $class = explode('\\', get_called_class());
    echo end($class);
    

    或者用 preg_replace

    echo preg_replace('/.*([\w]+)$/U', '$1', get_called_class());
    

    【讨论】:

      【解决方案2】:

      你也可以在传递的类中添加一个方法来返回这个:

      var_dump(get_called_class());

      【讨论】:

        【解决方案3】:

        直接来自 php 文档:http://uk.php.net/manual/en/function.get-class.php

        <?php
        
        abstract class bar {
            public function __construct()
            {
                var_dump(get_class($this));
                var_dump(get_class());
            }
        }
        
        class foo extends bar {
        }
        
        new foo;
        
        ?>
        
        The above example will output:
        
        string(3) "foo"
        string(3) "bar"
        

        【讨论】:

          【解决方案4】:

          使用get_class:

          $className = get_class($object);
          

          【讨论】:

            【解决方案5】:

            __ CLASS __ 返回实现该方法的类的名称。

            如果你想获取传递的对象的类名,那么你可以使用:

            get_class($param);
            

            另外,如果您使用的是 PHP5,那么提供的反射类也很有用。

            【讨论】:

              【解决方案6】:

              请参阅get_class,这应该正是您想要实现的目标。

              $class_name = get_class($object);
              

              【讨论】:

                猜你喜欢
                • 2020-05-12
                • 2015-01-29
                • 2012-03-18
                • 1970-01-01
                • 2011-02-14
                • 2011-06-20
                • 2015-12-31
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多