如何轻松地为 php 8+ 中的嵌套类的属性赋值(简短表示法)?

问题描述 投票:0回答:1

如果不声明该类,PHP >=8 会产生致命错误。 嵌套类有缩写形式吗?

$obj -> key1 -> var1 = "quick and easy"; 

或者这是唯一可能的方法:

$obj =   new stdClass();
$obj -> key1 =  new stdClass();
$obj -> key1 -> var1 ="nasty"; 

分别

$obj = (object)[ 'key1' => (object)[ 'var1' => "to many brackes and quotes" ],];

我真的更喜欢不带引号和括号的符号。可读性也更好。

class nested readability php-8 stdclass
1个回答
0
投票

我同意创建类与数组时有更多的引号和括号。然而,我强烈不同意可读性部分,因为这只是格式问题。

一些提示:

  1. 始终将新条目放在新行中
  2. 将所有键与最大的键对齐(也许您的 IDE 可以为您执行此操作)
  3. 对条目的所有属性使用相同的结构

一个例子可以是:

[
    'contact_id'                 => ['TYPE' => 'INT', 'INDEX' => true],
    'relation_id'                => ['TYPE' => 'INT', 'INDEX' => true],
    'relation_contact_email'     => ['TYPE' => 'TEXT'],
]

对对象执行此操作时:

$properties = new stdClass();

$contact_id = new stdClass();
$contact_id->TYPE = 'INT';
$contact_id->INDEX = true;
$properties->contact_id = $contact_id;

$relation_id = new stdClass();
$relation_id->TYPE = 'INT';
$relation_id->INDEX = true;
$properties->relation_id = $relation_id;

$relation_contact_email = new stdClass();
$relation_contact_email->TYPE = 'TEXT';
$properties->relation_contact_email = $relation_contact_email;

我认为我不需要进一步说明什么更具可读性和更易于使用。语言的语法不是你喜欢的,而是你需要学习的。

© www.soinside.com 2019 - 2024. All rights reserved.