[英]PHP Instantiate obj class with variable not working
我发现了一个我不确定是PHP还是我的代码错误的问题(可能是我的),所以让我向您展示发生了什么:
<?php namespace MyApp\Conciliation;
use SimpleExcel\SimpleExcel;
use ForceUTF8\Encoding;
use MyApp\Conciliation\Gol;
class Conciliation {
protected function equalizeFile($file, $providerName)
{
$type = false;
$nfile = 'public'.$file;
// TEST 1: the ideal aproach. not working (see error#1 bellow)
$provider = new $providerName();
// TEST 2: working, getting the correct response
$provider = new Gol();
// TEST 3: working, getting the correct response
$provider = new MyApp\Conciliation\Gol();
$provider->equalize($nfile);
}
注意, $providerName = 'Gol';
error1 找不到类别'Gol'
因此,有什么办法可以让我继续使用变量来实例化别名,就像上面一样?
编辑,已解决问题:工作示例
<?php namespace MyApp\Conciliation;
use SimpleExcel\SimpleExcel;
use ForceUTF8\Encoding;
class Conciliation {
protected function equalizeFile($file, $providerName)
{
$type = false;
$nfile = 'public'.$file;
$providerName = "MyApp\\Conciliation\\".$providerName;
$provider = new $providerName();
$provider->equalize($nfile);
}
http://php.net/manual/en/language.namespaces.dynamic.php
如果要动态调用该类,则必须使用该类的完整路径。
因此,您对equalizeFile
的调用应类似于:
equalizeFile("myFile", "MyApp\\Conciliation\\Gol");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.