如果我使用 PDO 并使用 FETCH_INTO
...
$query->setFetchMode(PDO::FETCH_INTO, $this);
$query->execute();
我有一个小问题。 PHP 变量采用驼峰命名法,但 MySQL 列名采用带下划线。所以我有 creationDate
与 creation_date
。
我应该重命名方程的一侧以匹配另一侧,还是通过 __set
魔术方法(使用 switch 命令)进行一些 1:1“映射”?
最佳答案
看看 symfony 的 sfInflector 类,它做同样的工作(在camelize方法中):
http://trac.symfony-project.org/browser/branches/1.4/lib/util/sfInflector.class.php
这是提取的代码:
$tmp = $lower_case_and_underscored_word;
$tmp = sfToolkit::pregtr($tmp, array('#/(.?)#e' => "'::'.strtoupper('\\1')",
'/(^|_|-)+(.)/e' => "strtoupper('\\2')"));
以及 sfToolkit 中的代码:
public static function pregtr($search, $replacePairs)
{
return preg_replace(array_keys($replacePairs), array_values($replacePairs), $search);
}
关于php - 将 MySQL 列名映射到变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9942171/