php - 类外定义的方法?

标签 php c++ class oop

我想知道 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/

相关文章:

c++ - 接口(interface)的名称是否可以与其类中的名称不同? [C++]

php - 在 Laravel 中找不到类 'Symfony\Component\Debug\ExceptionHandler'

php - 获取单击的按钮表行值以更新数据库

c++ - 如何编写一个程序,可以像 Ubuntu 中的命令一样添加信息(例如 : program -u "Hello World")

c++ - 以相反的顺序将元素从 vector A 移动到 vector B(非空)

c++ - 将二进制数据写入 private ofstream 会产生意想不到的结果

c# - 为类命名未知数量的新实例

php - laravel 如何从多个表中获取列值?

php - Codeigniter 从结果行中获取 2 列()

C++ limit process child 忽略 SIGXCPU