从函数中访问类实例

时间:2015-01-17 16:15:37

标签: php function class oop

是否可以做类似的事情:

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

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

$class1 = new Class1('foo');

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

function1();

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

1)实例 - 最佳解决方案

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

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

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

PS。你应该尽量避免混合对象 - 函数编程。如果您决定使用对象编程,请尝试将所有内容都实现为对象。维护,阅读和更新更容易。混合对象和功能是好的,只有当你正在重写'旧系统对象,而不是一切都可以立即完成。


PS2。对象应始终实现真实对象或抽象对象(路由器,数据库,表,用户)。在这种情况下,当你的函数需要对象时,将它作为参数传递就是你需要的 - 实际上这个函数需要这个对象。因此,传递它并不是羞耻,相当自豪;)。

致以最诚挚的问候,希望有所帮助。