我使用的是Symfony 4.3.8,我找不到任何关于这些弃用的信息:
不推荐用户:创建条令\ORM\Mapping\UnderlineNamengStrategy而不知道其编号已不推荐,将在条令ORM 3.0中删除。
不建议在不知道编号的情况下创建条令\ORM\Mapping\下划线策略,该策略将在条令ORM 3.0中删除。
我在stackTrace中搜索并发现了这个:
class UnderscoreNamingStrategy implements NamingStrategy
{
private const DEFAULT_PATTERN = '/(?<=[a-z])([A-Z])/';
private const NUMBER_AWARE_PATTERN = '/(?<=[a-z0-9])([A-Z])/';
/**
* Underscore naming strategy construct.
*
* @param int $case CASE_LOWER | CASE_UPPER
*/
public function __construct($case = CASE_LOWER, bool $numberAware = false)
{
if (! $numberAware) {
@trigger_error(
'Creating ' . self::class . ' without making it number aware is deprecated and will be removed in Doctrine ORM 3.0.',
E_USER_DEPRECATED
);
}
$this->case = $case;
$this->pattern = $numberAware ? self::NUMBER_AWARE_PATTERN : self::DEFAULT_PATTERN;
}
在这个类中,构造函数总是在没有参数的情况下被调用,所以$NumberAware总是false。
这个类是在Symfony依赖项注入自动生成的html" target="_blank">文件中调用的,所以我不能“编辑”它。。。
我想也许是在doctrine.yaml:
doctrine:
orm:
auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
但我没有找到任何选项,让号码知道:(
对于那些使用symfony4.3但仍希望消除此警告的用户,可以在service.yaml中添加新的服务定义
custom_doctrine_orm_naming_strategy_underscore:
class: Doctrine\ORM\Mapping\UnderscoreNamingStrategy
arguments:
- 0
- true
并更改doctor.yaml的配置,如下所示:
orm:
naming_strategy: custom_doctrine_orm_naming_strategy_underscore
在直接提交此更改之前,我建议您验证将true
传递到Doctrine\ORM\Mapping\下划线策略
不会影响代码的预期行为。
// class UnderscoreNamingStrategy
/**
* Underscore naming strategy construct.
*
* @param int $case CASE_LOWER | CASE_UPPER
*/
public function __construct($case = CASE_LOWER, bool $numberAware = false)
{
if (! $numberAware) {
@trigger_error(
'Creating ' . self::class . ' without making it number aware is deprecated and will be removed in Doctrine ORM 3.0.',
E_USER_DEPRECATED
);
}
$this->case = $case;
$this->pattern = $numberAware ? self::NUMBER_AWARE_PATTERN : self::DEFAULT_PATTERN;
}
快速提示:
将true
传递给指挥官将使该类使用NUMBER\u-AWARE\u模式,而不是
DEFAULT\u模式
private const DEFAULT_PATTERN = '/(?<=[a-z])([A-Z])/';
private const NUMBER_AWARE_PATTERN = '/(?<=[a-z0-9])([A-Z])/';
在大多数情况下,我只是用评论来回答这类问题,但我怀疑其他开发人员可能会遇到这个问题。我翻了一下,找不到任何关于这个问题的明确文档。也许是因为DoctrineBundle由Doctrine人员控制,而不是由Symfony开发人员控制。或者我只是一个糟糕的搜索者。
无论如何,在4.3到4.4之间,下划线命名策略的服务名称已更改。
# doctrine.yaml
orm:
# 4.3
naming_strategy: doctrine.orm.naming_strategy.underscore
# 4.4
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
并添加了一条已弃用的消息来警告开发人员更改名称。如果信息更明确一点就好了,但是哦,好吧。因此,如果您正在将现有应用升级到4.4及更高版本,那么您可能需要手动编辑doctrine.yaml文件,以消除折旧消息。
有关做出更改原因的更多信息(谢谢@janh):https://github.com/doctrine/orm/blob/2.8.x/UPGRADE.md#deprecated-数字未知DoctrineOrmMappingUnderlineName策略https://github.com/doctrine/orm/issues/7855
仍然不清楚为什么“他们”选择这样做,但是哦,好吧。您可能希望运行“bin/控制台原则:模式:更新-转储-sql”,看看这是否会影响您的数据库列名,并相应地进行调整。这些变化已经发布了几周,似乎没有多少人对这些变化感到愤怒,所以我想大多数列名都没有嵌入数字。至少到目前为止。
问题内容: 有没有一种方法可以在Java中创建数组,而无需先定义或要求其长度? 再次,用户输入一些数字作为参数,然后程序创建了一个包含这么多参数的数组。 问题答案: 有没有一种方法可以在Java中创建数组,而无需先定义或要求其长度?再次,用户输入一些数字作为参数,然后程序创建了一个包含这么多参数的数组。 目前尚不清楚您所处的状态。如果您知道执行时的数组长度而不是编译时的数组长度,那就可以了: 您可
在GitHub站点上有一个链接。。。 https://help.github.com/articles/generating-ssh-keys ... 它说。。。 如果您决定不使用推荐的HTTPS方法,我们可以使用SSH密钥在您的计算机和GitHub之间建立安全连接。下面的步骤将引导您生成SSH密钥,然后将公钥添加到GitHub帐户。 为什么HTTPS是推荐的方法?SSH方法中是否存在某种安全缺陷
原则上,我的应用程序不知道屏幕的纵横比(Android应用程序也应该如此)。现在,推荐的做法是手动添加 进入清单,因为智能手机屏幕的宽高比高于默认支持的1.86的趋势。我的问题是,与其设置一个硬编码的比率(如2.1),有没有更好的方法告诉Android,我不在乎最大宽高比是多少? 如果否,是否可以设置任意高的值,例如3.1甚至5.1?这样做安全吗?我说的不是奇怪的屏幕尺寸,而是未来的主流屏幕和未来
问题内容: 我收到此警告,但是该程序仍然可以正常运行。 MySQL代码向我显示了一条PHP消息: 不推荐使用:mysql_connect():不推荐使用mysql扩展,以后将被删除:在第2行的C:\ xampp \ htdocs \ task \ media \ new \ connect.inc.php中使用mysqli或PDO代替 我的页面是 这是什么意思,我该如何消除该消息? 问题答案: 有
问题内容: 我正在尝试使用和进行单元测试。 当我不包含注释时,测试将失败。但 不推荐使用MockitoJUnitRunner类型 我正在使用Mockito 2.6.9。我应该怎么做? 问题答案: 现在确实已弃用,应该改为使用。如您所见,仅软件包名称已更改,该类的简单名称仍为 。 摘录自javadoc : 移至,该课程将在Mockito 3中删除