2014-03-13 102 views
0

我是新来的编程。我有这种情况:从另一个班级功能调用班级功能

我有A类,它有许多功能。其中一个功能是functionX。

在functionX我需要对函数y调用属于另一个等级:B级

那么,如何查看在函数y从内functionX?

我使用Codeigniter。

在此先感谢。

+2

因为'好'在技术文本方面非常不明确。有些人通过筛选最硬的手册来学习,而其他人则通过实例学得更好。 –

+0

@NeilMasters - 有各种各样的教科书 - 所以一个好的是你的学习风格 –

+1

我同意@EdHeal这是基本的面向对象,一本好书会解释它比我们任何人都可以更好 – meda

回答

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

1

试试这个。

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

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

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

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

但也许你的意思是别的吗?

1

类功能?一个静态方法?

如果你有一个实例(public)方法,你可以调用$ 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; 
    } 
} 
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 
} 
相关问题