PHP:调用另一个类的方法

2022-08-30 12:09:59

我仍在学习OOP,所以这甚至可能是不可能的(尽管如果是这样,我会感到惊讶),我需要一些帮助来调用另一个类方法。

例如,在 有此方法:ClassA I

function getName()
{
    return $this->name;
}

现在从(不同的文件,但在同一个目录中),我想调用 's ,我该怎么做?我试图只是做一个,但这不起作用。ClassBClassAgetName()include()

谢谢!


答案 1
//file1.php
<?php

class ClassA
{
   private $name = 'John';

   function getName()
   {
     return $this->name;
   }   
}
?>

//file2.php
<?php
   include ("file1.php");

   class ClassB
   {

     function __construct()
     {
     }

     function callA()
     {
       $classA = new ClassA();
       $name = $classA->getName();
       echo $name;    //Prints John
     }
   }

   $classb = new ClassB();
   $classb->callA();
?>

答案 2

如果它们是单独的类,则可以执行如下操作:

class A
{
    private $name;

    public function __construct()
    {
        $this->name = 'Some Name';
    }

    public function getName()
    {
        return $this->name;
    }
}

class B
{
    private $a;

    public function __construct(A $a)
    {
        $this->a = $a;
    }

    function getNameOfA()
    {
        return $this->a->getName();
    }
}

$a = new A();
$b = new B($a);

$b->getNameOfA();

我在此示例中所做的是首先创建该类的新实例。之后,我创建了一个类的新实例,我将实例传递给该实例到构造函数中。现在可以使用 访问类的所有公共成员。ABABA$this->a

另请注意,我不会在类内实例化类,因为这意味着我将这两个类紧密耦合。这使得很难:AB

  1. 对类进行单元测试B
  2. 将类换成另一个类A

推荐