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

use*_*830 2 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();

}
Run Code Online (Sandbox Code Playgroud)

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

Jvd*_*erg 10

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

例:

file1.php:

class Object
{
   public function SomeMethod()
   {
      // do stuff
   }
}
Run Code Online (Sandbox Code Playgroud)

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();
   }
}
Run Code Online (Sandbox Code Playgroud)

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

class ComplexObject
{
   private $object;
   private $otherobject;

   public function __construct(Object $object, OtherObject $otherobject)
   {
      $this->object = $object;
      $this->otherobject = $otherobject;
   }
}
Run Code Online (Sandbox Code Playgroud)

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

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 );
Run Code Online (Sandbox Code Playgroud)