gpt4 book ai didi

PHP - 从字符串数组生成函数

转载 作者:可可西里 更新时间:2023-10-31 23:28:19 26 4
gpt4 key购买 nike

在我的应用程序中,我需要很多 getter 和 setter,我的想法是从一个数组中生成它们,例如:

protected $methods = ['name', 'city'];

有了这两个参数,我将需要生成以下方法:

public function getNameAttribute() {
return $this->getName();
}

public function getName($lang = null) {
return $this->getEntityValue('name', $lang);
}

对于城市,方法是:

public function getCityAttribute() {
return $this->getCity();
}

public function getCity($lang = null) {
return $this->getEntityValue('city', $lang);
}

当然,我也需要生成 setter(使用相同的逻辑)。

如您所见,我需要一个带有 get<variable_name>Attribute 的方法在这个电话里面 get<variable_name>另一个 (getName) 甚至返回相同的方法(对于每个 getter),只需更改 'name'参数。

每个方法都有相同的逻辑,我想“动态”生成它们。我不知道这是否可能..

最佳答案

您可以利用 __call()去做这个。我不打算提供完整的实现,但你基本上想做类似的事情:

public function __call($name, $args) {
// Match the name from the format "get<name>Attribute" and extract <name>.
// Assert that <name> is in the $methods array.
// Use <name> to call a function like $this->{'get' . $name}().

// 2nd Alternative:

// Match the name from the format "get<name>" and extract <name>.
// Assert that <name> is in the $methods array.
// Use <name> to call a function like $this->getEntityValue($name, $args[0]);
}

关于PHP - 从字符串数组生成函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39632852/

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