我目前正在从 youtube 等学习 oop,并且我开始使用它的第一个项目。我一直没有回答的问题是..
说我有两节课
class a{
public function dosomething($var){
}
}
和
class b{
}
我可以从 b 类访问 dosomething 功能吗?如果是这样,有人可以指出我正确的方向。
谢谢
你有两个选择:
a
给类b
并在其上调用方法。(建议)a
静态并将其称为a::method()
. (你不应该这样做)要解决第一种方法的问题,您的b
类需要稍作修改:
class b{
public function callMethodOfClassa(a $instanceOfa, $var) {
$instanceOfa->dosomething($var);
}
}
或者:
class b {
private $property;
public function callMethodOfClassa($var) {
$this->property->dosomething($var);
}
public function __construct(a $instanceOfa) {
$this->property = $instanceOfa;
}
}
在第二个示例中,您在$property
此处调用的字段中保留对传递实例的引用,并在b
初始化实例时传递:
$instanceOfa = new a();
$instanceOfb = new b($instanceOfa);
为了更好地理解使用 php 进行面向对象编程,请阅读手册
并承诺为第二个示例演示第一个示例 演示(为了更好地理解进行了名称更改)。
来自评论的详细解释:
class a{
public function dosomething(b $var){
$var->dosomething2();
}
public static function dosomething3(b $var){
$var->dosomething2();
}
}
and
class b{
public function dosomething2(a $var){
echo 'Hi, not doing anithing with this var!';
}
}
usage:
$variable1 = new a();
$variable2 = new b();
$variable1->dosomething($variable2);
a::dosomething3($variable2); //static call, no instance
$variable2->dosomething2($variable2);