所以这是一个非常简单的例子:
$sth = $dbh->prepare("SELECT foo FROM bar");
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
使用PDO::FETCH_ASSOC
的值代替常量本身是否被视为不良做法?
如果你写了很多代码,这会更快一些(原因不仅在这个例子中)
$sth = $dbh->prepare("SELECT foo FROM bar");
$result = $sth->fetchAll(2);
所以改为使用PDO::FETCH_ASSOC
- 只是2
,这是PDO::FETCH_ASSOC
的值。
我目前看到的最常用的用法是error_reporting(24567)
而不是error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED)
(或类似的用途)
我知道其他代码维护者很难理解这段代码。但是有什么缺点吗?
答案 0 :(得分:2)
如果你写了很多代码
...然后你做错了什么。 编程代表尽可能少编写代码。例。写下以下代码一次
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
然后再写
$result = $sth->fetchAll();
没有任何参数,无论是常数还是数字。
更不用说
了单凭这个原因绰绰有余我知道其他代码维护者很难理解这段代码。
答案 1 :(得分:1)
使用
PDO::FETCH_ASSOC
的值代替常量本身是否被视为不良做法?
是的,这是不好的做法
我知道其他代码维护者很难理解这段代码。但是有什么缺点吗?
是的,PHP MIGHT 将来会更改与常量相关联的值。 - (对bassxzero所说的内容略有修改)
最佳做法与编写代码的简易性无关。如果是,我们默认都会使用它们。它们是关于维护代码的简易性。它们是关于在坚实的基础上构建代码,因此它可以度过风暴。
另外,从概念上讲,你不是真的将数值2作为参数传递,你传递的答案是"获取一个关联数组" 以数字2表示。