这是一个非常基本的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的属性,还是可以访问对象的静态方法?
答案 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的潜力的其他问题,如果以前包含在其他地方并因此未包含在方法中,则无法利用所示方法中的变量。