我想知道 php 方法是否曾经在类主体之外定义,因为它们通常在 C++ 中完成。我意识到这个问题与 Defining class methods in PHP 相同.但我相信他最初的问题是“声明”而不是“定义”,所以所有答案似乎都有点不合适。
更新:
可能我的定义和声明的想法是有缺陷的。但是通过在类主体之外定义,我的意思是等同于 C++
class CRectangle {
int x, y;
public:
void set_values (int,int);
int area () {return (x*y);}
};
void CRectangle::set_values (int a, int b) {
x = a;
y = b;
}
所有的 php 代码示例都在类主体中包含代码,就像 C++ 内联函数一样。即使在 PHP 中两者之间没有功能差异,也只是风格问题。
最佳答案
这是一个永远不应该使用的可怕、丑陋的 hack。但是,你自找的!
class Bar {
function __call($name, $args) {
call_user_func_array(sprintf('%s_%s', get_class($this), $name), array_merge(array($this), $args));
}
}
function Bar_foo($this) {
echo sprintf("Simulating %s::foo\n", get_class($this));
}
$bar = new Bar();
$bar->foo();
我做了什么?不管怎样,要添加新方法,只需在它们前面加上类名和下划线。该函数的第一个参数是对 $this
的引用。
关于php - 类外定义的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1280178/