从TWO类调用ONE类的功能而不延伸?

时间:2011-08-17 23:31:52

标签: php class reference

如果我有两个类A,B和一个不扩展另一个,它们是分开的但是加载到脚本中我仍可以从B中引用A中的函数吗?

class A {
    function one() {
        echo "Class A";
    }
}

class B {
    function two() {
        echo "Class B";
        A::one();
    }
}


$a new A; 
$b = new B;

$b->two();

3 个答案:

答案 0 :(得分:2)

从表面上看,是的,你可以做到这一点。但是,类one()中的函数A需要声明为static,以使您的调用符号起作用。 (这使它成为类方法。)

代码中最后一行建议的另一种方法是让实例$b调用实例$a中的函数。这些函数称为实例方法,它们通常与对象进行交互。要访问这些方法,必须将它们声明为public。声明为private的方法只能由该类中的其他方法调用。

有几种方法可以在代码中调用实例方法。这些是您可以将$a作为参数传递给函数的明显两个,或者您可以在方法中创建类A的实例。

你到底想要实现什么目标?

答案 1 :(得分:1)

你可以像这样定义它。

class A {
    public static function one() {
        echo "Class A";
    }
}

class B {
    function two() {
        echo "Class B";
        A::one();
    }
}


$a new A; 
$b = new B;

$b->two();

答案 2 :(得分:0)

你可以将一个定义为静态,但为什么要做这样的事情?