想象一下带有一组复选框的Web表单(可以选择其中的任何一个或全部).我选择将它们保存在存储在数据库表的一列中的逗号分隔值列表中.
现在,我知道正确的解决方案是创建第二个表并正确地规范化数据库.实现简单的解决方案更快,我想快速获得该应用程序的概念验证,而无需花费太多时间.
我认为节省的时间和更简单的代码在我的情况下是值得的,这是一个可辩护的设计选择,还是我应该从一开始就将其标准化?
更多上下文,这是一个小型内部应用程序,实际上取代了存储在共享文件夹中的Excel文件.我也在问,因为我正在考虑清理程序并使其更易于维护.在那里有一些我并不完全满意的事情,其中一个是这个问题的主题.
我刚刚开始升级我的代码以兼容 php 8.1。我有很多代码片段,其中我将潜在的空值传递给内部函数。
if (strlen($row) > 0) {
...
}
Run Code Online (Sandbox Code Playgroud)
其中 $row 来自可能具有空值的源(例如查询)。这可能会生成弃用警告;在这种情况下:
已弃用:strlen():已弃用将 null 传递给字符串类型的参数 #1 ($string)
我正在寻找最简单、最省时的方法来处理升级此代码,例如修复可以进行全局搜索和替换的位置。似乎对我传递给内部函数的变量进行类型转换可以在不改变功能的情况下工作。
error_reporting(E_ALL);
$row = null;
if (strlen((string) $row) > 0) {
...
}
Run Code Online (Sandbox Code Playgroud)
除了以这种方式编码的道德方面之外,这种内部功能方法是否存在问题?有没有更好的方法(除了完全重写代码并以不同的方式处理空值之外)?我更喜欢这个向后兼容 v7.4 的解决方案,尽管我可能会兼容 8.0。
我知道我的用户定义函数还有其他选择。