2014-03-13 99 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 
} 
相關問題