我正在学习OOP PHP。我想将一个方法从另一个类调用到一个新类。
仅举个例子:
<?php
class Aclass {
function aMethod($input)
{
echo 'Hello a world ';
}
}
?>
我想把方法aMethod从类“ Aclass ”调用到新类中。
<?php
class Bclass {
//calling the method here?
}
?>
我试过延伸,仍然没有为我工作。
感谢。
答案 0 :(得分:2)
在班级Bclass
中,您应该创建一些功能。如果您正在创建Aclass
的新实例,然后使用函数aMethod
。
示例强>
<?php
class Bclass {
public function __construct() {
$a = new Aclass();
$a->aMethod("some_text");
}
}
?>
其他方式是扩展Bclass
。在这种情况下,您的班级Bclass
会扩展Aclass
中的所有内容,以便您可以将其与$this
一起使用。
示例强>
<?php
class Bclass extends Aclass {
public function __construct() {
$this->aMethod("some_text");
}
}
?>
aMethod
中的Aclass
功能也应具有公开或受保护的可见性。如果您创建实例则公开,如果扩展则受保护。最后可以在手册中找到更多信息。
示例强>
<?php
class Aclass {
public function aMethod($input) // protected if you will extend this class
{
echo 'Hello a world ';
}
}
?>
当然,您不仅可以在__construct
中使用这两种方法,还可以在其他功能中使用这两种方法。
<强>手册强>
答案 1 :(得分:0)
为此,我使用依赖注入。这只是一种说法&#34;在创建A
&#34;时发送B
课程对象的一种奇特方式。
换句话说,就像这样:
class typeA {
public function __construct () {};
public function test () {
return 'Test string';
}
}
class typeB {
protected $testObj;
public function __construct (typeA $testCase) {
$this->testObj = $testCase;
}
public function getTest () {
return $this->testObj->test ();
}
}
$a = new typeA ();
$b = new typeB ($a);
echo $b->getTest ();
构造函数用于创建一个准备 的对象,这就是为什么我只是将依赖存储在里面的原因typeB
对象本身。然后,在getTest()
方法中,我调用对象的test()
方法,以便从中获取所需的数据。
以这种方式执行此操作将允许您编写灵活的OOP代码,可以根据需要轻松扩展和扩展。通过在那里创建对象来隐藏构造函数中的依赖项,可以创建隐藏和硬依赖。正确利用基于类的设计的可扩展性质的东西,如果不是正确的话,也会变得更加困难。