【发布时间】:2008-12-16 19:04:46
【问题描述】:
我正在使用 PHP,我想知道将大量函数组合到一个类中是多么糟糕的做法。我知道这不是类的目的,但我这样做的原因是提供一个命名空间。在执行 PHP 脚本时启动 10 个类而不是 2 个或 3 个类会产生多大的影响?
【问题讨论】:
标签: php oop class performance
我正在使用 PHP,我想知道将大量函数组合到一个类中是多么糟糕的做法。我知道这不是类的目的,但我这样做的原因是提供一个命名空间。在执行 PHP 脚本时启动 10 个类而不是 2 个或 3 个类会产生多大的影响?
【问题讨论】:
标签: php oop class performance
如果你使用的是
<?php
class Foo {
public static function aStaticMethod() {
// ...
}
}
Foo::aStaticMethod();
?>
(复制自the php manual)
我会在某种程度上说它是一个类的功能 - 功能分组。
这不会有任何与性能相关的问题(您可以执行数百万次并且您甚至不会注意到 - 应该没有运行时成本,只有一分钟的额外解析成本,这可以忽略不计)。现代 php 框架会引入大量代码并在内部创建大量对象 - 我不会担心 php 性能,数据库性能几乎总是会首先影响您。确保您的代码可读且可维护(是的,尤其是 php 代码;)),如果这意味着对函数进行分组,那么就这样做。
“97% 的时间过早优化是万恶之源”,尤其是当你在做网页而不是核模拟时;)
编辑:public 和 static 仅是 php5,在 php
<?php
class Foo {
function aStaticMethod() {
// don't touch $this
}
}
Foo::aStaticMethod();
?>
【讨论】:
如果您非常担心加载 10 个类太慢的性能,那么您不应该使用 PHP。
至少,使用像 APC 这样的操作码缓存,然后加载类根本不应该成为负担。
【讨论】:
您可能不知道 PHP 最近支持一流的命名空间:http://php.net/language.namespaces。
【讨论】: