从另一个类函数调用一个类函数

时间:2014-03-13 17:37:20

标签: php oop

我是编程新手。我有这个:

我有A级,它有很多功能。其中一个功能是functionX。

在functionX中,我需要调用属于另一个类的functionY:Class B.

那么如何从functionX内部访问functionY?

我使用Codeigniter。

提前致谢。

5 个答案:

答案 0 :(得分:1)

尝试并试验一下。

class ClassA {
    public function functionX() {
        $classB = new ClassB();
        echo $classB->functionY();
    }
}

class ClassB {
    public function functionY() {
        return "Stahp, no more OO, stahp!";
    }
}

答案 1 :(得分:1)

班级功能?静态方法?

如果您有实例(公共)方法,只需调用$ classB-> functionY()。

如果你有静态方法,你可以调用ClassB :: functionY();

所以:

class ClassA {
    public function functionX(){
       $classB = new ClassB();
       // echo 'foo';
       echo $classB->functionY();

       // echo 'bar';
       echo ClassB::functionYStatic();
    }
}

class ClassB {
    public $someVar;
    public static $someVar2 = 'bar';

    function __construct(){
      $this->someVar = 'foo';
    }
    public function functionY(){
       return $this->someVar;
    }
    public static function functionYStatic(){
       return self::$someVar2;
    }
}

答案 2 :(得分:0)

那取决于。如果该功能是静态功能。

首先,您必须在课程中包含该文件...

include_once('file_with_myclass.php'); 

如果它是静态的,你可以这样称呼它:

ClassName::myFunction()

如果不是,则创建该类的实例,然后在该实例上调用该函数。

$obj = new ClassName();
$obj->myFunction();

您可以猜测该函数是静态的意味着您可以在不需要创建实例的情况下调用它。例如,如果您有一个Math类并希望定义一个函数来获取参数来计算它们的总和,那么这很有用。创建一个Math实例来实现它并不是很有用,所以你可以声明为静态并以这种方式使用它。

这是指向具有更多信息的文档的链接

http://www.php.net/manual/en/keyword.class.php

答案 3 :(得分:0)

如果functionY是静态的,您可以调用ClassB :: functionY()。否则,您必须首先创建B类实例。像:

$instance = ClassB;
$instance->functionY();

但也许你的意思是其他的东西?

答案 4 :(得分:0)

看起来你的某个类与另一个类有依赖关系:

<?php

class A
{
    public function x()
    {
        echo 'hello world';
    }
}

class B
{
    private $a;

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

    public function y()
    {
        $this->a->x();
    }
}

$a = new A();
$b = new B($a);
$b->y();

根据代码的外观,如果有意义,可以将类A注入y()

public function y(A $a)
{
    // your code with $a
}