从函数访问 class 个实例

Access class instance from function

是否可以做类似的事情:

class Class1
{
    public function __construct($param1) {
        # code ...
    }

    public function method1() {
        # code ...
        echo 'works';
    }
}

$class1 = new Class1('foo');

function function1() {
    $class1->method1();
}

function1();

或者我是否需要将 class 的实例传递给函数?

谢谢。

您必须将实例传递给函数,或使用 GLOBALS :)。

1) 实例 - 最佳解决方案

function function1(Class1 $class) {
    $class->method1();
}

2) 全局变量 - http://php.net/manual/en/reserved.variables.globals.php - 但是你必须小心,全局变量很难跟踪和测试你的代码。最好的方法就是将它作为参数传递。

function function1() {
    global $class1;
    $class1->method1();
}

PS。您应该尽量避免混合对象 - 函数编程。如果您决定使用对象编程,请尝试将所有内容实现为对象。更易于维护、阅读和更新。混合对象和函数是好的,前提是你是 'rewriting' 旧系统对象,并不是所有事情都可以一次完成。


PS2。对象应该始终实现真实对象或抽象对象(路由器、数据库、table、用户)。在那种情况下,当您的函数需要对象时,将它作为参数传递就是您所需要的——实际上这个函数需要这个对象。所以通过它并不丢脸,而是自豪;)。

此致,希望对您有所帮助。