我目前正在从youtube等学习oop并开始使用它开始我的第一个项目。我一直没有回答的问题是..
说我有两个班级
class a{
public function dosomething($var){
}
}
和
class b{
}
我可以从b级访问dosomething函数吗?如果是这样,有人会指出我正确的方向。
由于
答案 0 :(得分:1)
您有两种选择:
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 the manual
并承诺demo for the first example demo for the second sample(为了更好地理解名称更改)。
答案 1 :(得分:0)
评论的详细阐述:
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);