【发布时间】:2013-08-04 07:43:46
【问题描述】:
我在优化我的 PHP 脚本时遇到了问题。例如:
一个 MySQL 表:
选项名称 ||选项值 ==================================================== === 基本网址 || http://mysite.com/myproject 主题名 ||默认 语言 || zhMyScript.php 文件:
class options {
private $options = null;
public function get($optionName) {
if(!isset($this->options))
self::get_data();
return $this->options[$optionName];
}
protected function get_Data() {
// ...
// DO A MYSQL QUERY AND SAVE IT TO $this->options
// ...
}
}
这个类返回的数据是常量。因此,每次我需要访问例如 base_url 值时,都不需要运行 MySQL 查询。 创建对象并在全局范围内使用它的最佳方式是什么?
$OPTIONS = new options;
function load_option($optName) {
global $OPTIONS;
return $OPTIONS->get($optName);
}
可能有类似这个功能的东西?有人说这是最糟糕的方法。
我需要帮助。谢谢!
【问题讨论】:
-
他们有没有告诉你为什么这是最糟糕的方式?我通常会忽略那些没有给我正确论据的人,即使他们是对的。
-
self::get_data();这不会抛出 E_STRICT,因为 get_data() 不是静态的 -
请停止使用全局变量。谁告诉你你的方法是“最糟糕的方法”,他是完全正确的。
-
@tereško 听起来你就是这样一个人,在没有给出好的论据和适当的替代方案的情况下大喊某件事是最糟糕的方式。我知道你是对的,但你仍然没有帮助。
标签: php oop query-optimization