如何跨不同的PHP文件使用实例化对象

时间:2012-10-18 14:46:26

标签: php object instantiation

这是一个非常基本的php问题:假设我有3个文件,file1,file2,file3。

在file1中,我声明了一个名为Object的类。在file2中,我有一个实例化Object的方法,将其称为$ object,并调用此方法Method

在file2中,此方法类似于

public function Method(){
$object = new Object;
...
require_once(file3);
$anotherobject = new AnotherObject;
$anotherobject->method();

}

最后,在文件3中,我声明了另一个AnotherObject。那么,如果我在file3中有一个方法'method',我可以直接引用$ object的属性,还是可以访问对象的静态方法?

2 个答案:

答案 0 :(得分:10)

这不是OOp的编程方式。为每个类提供自己的文件。据我所知,你有3个文件,其中包含类,并希望使用实例化的对象。使用依赖注入来构建彼此依赖的类。

示例:

<强> file1.php

class Object
{
   public function SomeMethod()
   {
      // do stuff
   }
}

file2.php ,使用实例化对象:

class OtherObject
{
   private $object;

   public function __construct(Object $object)
   {
      $this->object = $object;
   }

   // now use any public method on object
   public AMethod()
   {
      $this->object->SomeMethod();
   }
}

file3.php ,使用多个实例化对象:

class ComplexObject
{
   private $object;
   private $otherobject;

   public function __construct(Object $object, OtherObject $otherobject)
   {
      $this->object = $object;
      $this->otherobject = $otherobject;
   }
}

将所有这些绑定在一个引导程序文件或某种程序文件中:

<强> program.php

// with no autoloader present:
include_once 'file1.php';
include_once 'file2.php';
include_once 'file3.php';

$object = new Object();
$otherobject = new OtherObject( $object );

$complexobject = new ComplexObject( $object, $otherobject );

答案 1 :(得分:1)

$object的范围当然只限于方法。从方法中调用文件3,所以如果使用include(),我会认为是。然而,在方法内部使用require_once(),让我询问有关file3的潜力的其他问题,如果以前包含在其他地方并因此未包含在方法中,则无法利用所示方法中的变量。