doulei1965 2018-12-02 17:26
浏览 61
已采纳

类App \ Http \ Controllers \ ConfigClass的对象无法转换为字符串

I have 2 class:

namespace App\Http\Controllers;

class ConfigClass  {
    const ERROR_STATUS = 'kod html [[X]] error';
}

Second class:

use App\Http\Controllers\ConfigClass;

class StatusMessageClass
{

    public function __construct()
    {
        $this->config = new ConfigClass();
    }

    public function createMessageWithStatus(string $messageType, string $description): array
    {
        $classValue = $this->config.'' . $messageType;
        $html = str_replace("[[X]]", $description, $classValue);
        $message = array(
            'messageType' => $messageType,
            'html' => $html,
            'description' => $description
        );
        return $message;
    }

}

And i use this code:

$val = $messageBox->createMessageWithStatus('ERROR_STATUS', "Błędny login lub hasło")

I have error in line (Object of class App\Http\Controllers\ConfigClass could not be converted to string)

$classValue = $this->config.'' . $messageType;

How can i repeir this?

I need this result: $classValue = $this->config::ERROR_STATUS; But I need get this value "ERROR_STATUS" from $messageType in function

  • 写回答

1条回答 默认 最新

  • doudi1979 2018-12-02 17:44
    关注

    Class constants are not supposed to be retrieved from an instance.

    So you can get ConfigClass::ERROR_STATUS but not $this->config::ERROR_STATUS.

    A workaround is to use get_class() to turn $this->config back into ConfigClass, then you can use the constant() function to retrieve whatever constant is in $messageType:

    $classValue = constant(get_class($this->config) . '::' . $messageType);
    

    If you know you will always get the constants from ConfigClass, you can simplify this using the class name (and double quotes for variable interpretation):

    $classValue = constant("ConfigClass::$messageType");
    // you may need the full namespaced class: \App\Html\Controllers\ConfigClass
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog