简体   繁体   English

如何通过class():: function()将参数传递给php类

[英]how pass parameter to php class by class()::function()

How pass parameter to PHP class by class()::function() ? 如何通过class()::function()将参数传递给PHP类?

class greenHouse{
    public function __construct(connection $con){
    }

    public function show(){
    }

}

$nameclass = 'greenHouse';
$namefunction = 'show';
$nameclass::$namefunction();

works 作品

$nameclass = 'greenHouse';
$namefunction = 'show';
$nameclass($con)::$namefunction();

doesn't work 不起作用

I want to pass a parameter to the class with $nameclass($con)::$namefunction(); 我想使用$nameclass($con)::$namefunction();将参数传递给类$nameclass($con)::$namefunction(); . How do I do that in PHP? 如何在PHP中做到这一点?

You are trying to call a function statically with that notation... 您正在尝试使用该表示法静态调用函数...

$nameclass = 'greenHouse';
$namefunction = 'show';
$class = new $nameclass($con);
$class->$namefunction();

You can instantiate an object and immediately discard it by calling new within braces: 您可以实例化一个对象,并通过在花括号内调用new立即将其丢弃:

class Test
{
    private $name;

    function __construct($name)
    {
        $this->name = $name;
    }

    function speak()
    {

        echo $this->name;
    }

    function __destruct()
    {
        echo 'dead';
    }
}
$class='Test';
$method='speak';


(new $class('David'))->$method();

echo ' is ';

$temp = new $class('John');
$temp->$method();

echo ' is ';

//Daviddead is John is dead

So in your case: 因此,在您的情况下:

(new $nameclass($con))->$namefunction();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM