【问题标题】:PHP class instantiation from variable and use keywordPHP类从变量实例化并使用关键字
【发布时间】:2013-12-08 17:49:31
【问题描述】:

我可以问一个澄清吗?在我使用的文件顶部(Silex 上下文):
use Symfony\Component\Validator\Constraints as Assert;

假设我有一个数组$asserts,其断言名称为字符串:

'Assert\\NotBlank()', 'Assert\\Date()'

当我尝试时

foreach($asserts as $constraint) {
  array_push($some_other_array, new $constraint)
}

我得到 Class Assert\NotBlank() not found,但是当我明确地创建新实例时

foreach($asserts as $constraint) { 
  array_push($some_other_array, new Assert\NotBlank())
}

一切正常。我做错了什么?

编辑:我尝试了使用和不使用() 以及类的完整路径。

解决方案:应使用不带括号的完整路径数组。

'Symfony\Component\Validator\Constraints\NotBlank',
'Symfony\Component\Validator\Constraints\Date'

最好的问候,
卡米尔

【问题讨论】:

  • 松开字符串中类名末尾的括号。
  • 确切的错误信息是什么?这些类有无参数构造函数吗?
  • 是的,API

标签: php objectinstantiation


【解决方案1】:

尝试一个数组:

'Assert\\NotBlank', 'Assert\\Date'

和:

array_push($some_other_array, new $constraint());

每个人:dynamic class names in php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-06
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多