【问题标题】:Get object after outside function call外部函数调用后获取对象
【发布时间】:2013-09-11 11:52:45
【问题描述】:

在不使用静态类的情况下,如何在外部类实例调用之后调用对象上的函数。

这是我的示例(它应该回显“OKAY!”):

class class1  {
    function func1()  {
        func3();          // function outside class
    }

    function func2()  {
        echo "AY!";
    }
}

$foo = new class1();
$foo->func1();

function func3()
{
    echo "OK";
    $foo->func2();       // class instance doesn't exist any more
}

【问题讨论】:

    标签: php


    【解决方案1】:
    class class1  {
        function func1()  {
            func3($this);          // function outside class
        }
    
        function func2()  {
            echo "AY!";
        }
    }
    
    $foo = new class1();
    $foo->func1();
    
    function func3($object)
    {
        echo "OK";
        $object->func2();       // class instance doesn't exist any more
    }
    

    【讨论】:

      【解决方案2】:

      实例作为参数传递。跟随代码

      <?php
      
      class class1  {
          function func1($foo)  {
              func3($foo);          // function outside class
          }
      
          function func2()  {
              echo "AY!";
          }
      }
      
      $foo = new class1();
      $foo->func1($foo);
      
      function func3($foo)
      {
          echo "OK";
          $foo->func2();       // class instance doesn't exist any more
      }
      ?>
      

      输出:

      OKAY!
      

      【讨论】:

      • 更改参数名称是个好主意,这样很明显,您不受在所有 3 个位置使用相同的 $foo 的限制。只要有$this 可用,不要将任何东西传递给func1 也是有意义的。
      猜你喜欢
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      相关资源
      最近更新 更多