gpt4 book ai didi

php - PHP traits 会是一个好的解决方案吗

转载 作者:行者123 更新时间:2023-12-04 20:37:23 24 4
gpt4 key购买 nike

我正在开发一个 MVC 应用程序,其中模型是使用所有实际模型都必须扩展的抽象基类实现的。在每个模型中都有一些关于该模型的信息,当前以数组形式实现,我们称之为protected static $info。因此,每个模型都有不同的 $info 数组。现在,基类有很多函数使用该数组中的数据,目前这些函数中的每一个都以类似于下面示例 save() 函数的内容开头。

abstract class BaseModel {
function save(){
$className = get_called_class();
$modelInfo = $className::$info;
/* lots of other stuff */
}
}

class User extends BaseModel {
protected static $info = array("tableName" => "tblUsers", etc...)
}

据我所知,这可以通过使 BaseModel 成为特征而不是构造函数来解决,因为当特征定义 static 属性时,每个继承类都有自己的值。我会将 $info 数组从模型的实现复制到特征,可能在构造函数中,这样我就可以使用 self::info['tableName']在 BaseModel 的所有函数中...

这是个好主意吗?

最佳答案

完成这项工作最简单和最合适的工具是使用 late static binding :

function save(){
$modelInfo = static::$info;
/* lots of other stuff */
}

关于php - PHP traits 会是一个好的解决方案吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9897445/

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