gpt4 book ai didi

c# - PHP 中的部分类就像我们在 C# 中一样

转载 作者:IT王子 更新时间:2023-10-29 00:02:55 26 4
gpt4 key购买 nike

有没有什么简单的方法可以像我们在 C# 中那样在 PHP 中拥有 partial class 的概念?我尝试使用不同的命名空间使其成为可能,但它无法工作。

最佳答案

它们不存在。

但是,如果您正在尝试实现可以​​附加用户态代码的代码生成器(遵循与 C# 中相同的用例),则以下可能 是一个可行的选择:

class Generator
{
public function generate(Definition $definition)
{
if ($this->shouldGenerateTraitFor($definition)) {
$this->generateTraitFor($definition);
}
$this->generateClassFor($definition);
}
}

有了上面的一些实现,你就可以:

(new Generator())->generate(new Definition([
'class' => 'GeneratedClass',
'trait' => 'GeneratedTrait',
]));

生成的代码可能类似于:

class GeneratedClass
{
use GeneratedTrait;
}

trait GeneratedTrait
{
// @todo; add "partial" code
}

关于 Generator::shouldGenerateTraitFor 需要注意的重要一点是,如果它返回 false,则该特征不会重新生成。这可能以 GeneratedTrait.php 是否存在为条件,并且是确保在重新生成类时手写特征代码不会被破坏所必需的。

但是,考虑*对您有很大好处object composition超过这种方法。

* 有时我觉得生成代码的方法可以更简洁,例如使用“实体”类型,但这是个案。

关于c# - PHP 中的部分类就像我们在 C# 中一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21657684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com