簡體   English   中英

PHP實例化obj類的變量不起作用

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

http://inft.ly/N8Q6F4B

因此,有什么辦法可以讓我繼續使用變量來實例化別名,就像上面一樣?


編輯,已解決問題:工作示例

<?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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM