我在這裏使用PHP,我有兩個類。我可以在另一個類中調用一個類的函數嗎?例如:B類A類呼叫功能
class A { function a_func() { echo "A function"; } } $a = new A(); class B { function b_func() { $a->a_func(); // This is the thing I'm stuck with. } }
我希望我在這裏說清楚。我看了Google,但我不知道這是什麼,所以我什麼也沒有提出。謝謝你的幫助。
我在這裏使用PHP,我有兩個類。我可以在另一個類中調用一個類的函數嗎?例如:B類A類呼叫功能
class A { function a_func() { echo "A function"; } } $a = new A(); class B { function b_func() { $a->a_func(); // This is the thing I'm stuck with. } }
我希望我在這裏說清楚。我看了Google,但我不知道這是什麼,所以我什麼也沒有提出。謝謝你的幫助。
你有2個解決方法: 1)如果你的a_func不需要一個實例(好像是這種情況),喲ü可以使函數靜態和從第二類
class A
{
public static function a_func()
{
echo "A function";
}
}
class B
{
function b_func()
{
A::a_func();
}
}
2)1)如果您需要a_func一個實例,你不得不創建一個叫它:
class A
{
public function a_func()
{
echo "A function";
}
}
class B
{
function b_func()
{
$a = new A;
$a->a_func();
}
}
你可以,如果你製作$a
本地b_func()
。
無論是
聲明它global $a;
內b_func()
(可能不是一個好主意,取決於你的使用情況)
傳遞$a
作爲參數傳遞給b_func()
:
function b_func($a)
....
製作$a
的成員:
$b = new B();
$b->a = new a(); // Can be accessed by `b_func()` as `$this->a`#
或初始化$a
內b_func()
:
function b_func()
{
$a = new A();
這是最好的在你的場景將依賴新生什麼A和B做的,什麼關係他們。
感謝這Pekka。我應該在我原來的問題中說過這個,但原來的'$ a'將會保存我需要獲取值的變量。我不想創建另一個空白類,但在類型爲「$ a」的第一個對象中調用一個函數,該函數將獲得我之前設置的值。我有道理嗎? – Bojangles 2011-05-01 15:35:58
你可以叫a_func()如果實例A類第一:
class B
{
function b_funct()
{
$a = new A(); //create instance of A
$a->a_func(); //run function
}
}
一個替代方案是讓a_func靜:
static function a_funct()
,並稱呼其爲:
A::a_function();
還不錯的答案,所以遠。別人還沒有提到一件事......
如果B
需要對象A
正常工作,你應該通過一個進入構造和使用object composition:
class B {
protected $a;
public function __construct(A $a) {
$this->a = $a;
}
public function b_func() {
$this->a->a_func();
}
}
$a = new A;
$b = new B($a);
$b->b_func();
你會看到,我已經在類B
保護 財產。這是encapsulation,絕對是你應該閱讀的東西。
您應該閱讀的另一個重要的主題是dependency injection。
我不得不承認我對PHP類很新。如果我採用這種方法,我是否可以訪問我之前設置的類A的第一個實例的變量(通過代理函數)。我問原始問題的原因是因爲我有兩個對象,我想從一箇中獲取數據,並在另一箇中使用它。 – Bojangles 2011-05-01 15:39:45
我已經實現了第一個解決方案,並且我提出了這個錯誤:'在envars.php中的對象上下文中不使用$ this,使用'echo A :: a_func(「argument」)行時;'。這裏出了什麼問題?我將這些函數改爲'public static',但仍然是相同的錯誤。有任何想法嗎? – Bojangles 2011-05-01 15:57:32
我還應該補充說明的是:$ this-> vars [$ var]'。我真的迷失在這裏,所以更多的幫助將不勝感激。 – Bojangles 2011-05-01 16:13:47