php - App\Http\Controllers\ConfigClass 类的对象无法转换为字符串
问题描述
我有 2 节课:
namespace App\Http\Controllers;
class ConfigClass {
const ERROR_STATUS = 'kod html [[X]] error';
}
二等:
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;
}
}
我使用这段代码:
$val = $messageBox->createMessageWithStatus('ERROR_STATUS', "Błędny login lub hasło")
我有错误(App\Http\Controllers\ConfigClass 类的对象无法转换为字符串)
$classValue = $this->config.'' 。$消息类型;
我怎样才能重复这个?
我需要这个结果: $classValue = $this->config::ERROR_STATUS; 但我需要从函数中的 $messageType 获取这个值“ERROR_STATUS”
解决方案
不应从实例中检索类常量。
所以你可以得到ConfigClass::ERROR_STATUS
但不能$this->config::ERROR_STATUS
。
一种解决方法是使用get_class()
转回$this->config
,ConfigClass
然后您可以使用该constant()
函数来检索 中的任何常量$messageType
:
$classValue = constant(get_class($this->config) . '::' . $messageType);
如果您知道您将始终从 中获取常量ConfigClass
,则可以使用类名(以及用于变量解释的双引号)来简化此过程:
$classValue = constant("ConfigClass::$messageType");
// you may need the full namespaced class: \App\Html\Controllers\ConfigClass
推荐阅读
- reactjs - React Cognito 用户池 - 客户端试图写入未经授权的属性
- html - iframe 如何在其中嵌入 https 403 禁止站点?
- shell - 用文件编程
- spring-mvc - Spring MVC 请求映射中的浏览器 URL 错误
- php - Laravel 中所有命令的过滤数据查询
- c# - 为 mschart 创建缩放图片框
- ruby - 订阅生成错误的条带更新
- javascript - 使用onchange事件时如何使选择字段成为必需
- c++ - 如何将 std::to_string 函数的预填充归零?
- amazon-web-services - 托管静态网页时拒绝 Amazon s3 存储桶策略访问