Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如何从属性';类名';_Php - Fatal编程技术网

PHP:如何从属性';类名';

PHP:如何从属性';类名';,php,Php,想象一下这个代码: class-MyClass { 私有字符串$className; 公共函数构造(字符串$className) { $this->className=$className; } 公共函数实例化类() { $className=$this->className; 返回新的$className(); } } 有没有一种方法可以在不首先将属性值赋给方法实例化类()中的局部变量$className的情况下实例化类 大概是这样的: class-MyClass { 私有字符串$class

想象一下这个代码:

class-MyClass
{
私有字符串$className;
公共函数构造(字符串$className)
{
$this->className=$className;
}
公共函数实例化类()
{
$className=$this->className;
返回新的$className();
}
}
有没有一种方法可以在不首先将属性值赋给方法
实例化类()
中的局部变量
$className
的情况下实例化类

大概是这样的:

class-MyClass
{
私有字符串$className;
公共函数构造(字符串$className)
{
$this->className=$className;
}
公共函数实例化类()
{
//无法执行此操作,因为“className”应该是一个方法,而不是属性
返回新的$this->className();
}
}

有什么想法吗?

你可以使用
\uuu CLASS\uuuuuuuu
self:
static::

你可以试试

class MyClass
{

    public function __construct()
    {
    }

    static public function instantiateClass()
    {
        return new self();
    }

    static public function instantiateClassWithStatic()
    {
        return new static();
    }

}

$myInstance = MyClass::instantiateClass();

因此,@Cid在我的问题下面的评论中指出,解决方案实际上是我认为错误的:

类MyClass { 私有字符串$className; 公共函数构造(字符串$className) { $this->className=$className; }


}

@Cid,是的,它能工作!我以为没有,但它有!谢谢大家!
$className
是另一个类。
public function instantiateClass()
{
    // This works! It doesn't find a method, but reads the property correctly!
    return new $this->className();
}