[英]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.