我是新來的編程。我有這種情況:從另一個班級功能調用班級功能
我有A類,它有許多功能。其中一個功能是functionX。
在functionX我需要對函數y調用屬於另一個等級:B級
那麼,如何查看在函數y從內functionX?
我使用Codeigniter。
在此先感謝。
我是新來的編程。我有這種情況:從另一個班級功能調用班級功能
我有A類,它有許多功能。其中一個功能是functionX。
在functionX我需要對函數y調用屬於另一個等級:B級
那麼,如何查看在函數y從內functionX?
我使用Codeigniter。
在此先感謝。
那要看。如果該函數是一個靜態函數或沒有。
首先你必須包含與類文件...
include_once('file_with_myclass.php');
如果是靜態的,你可以這樣調用:
ClassName::myFunction()
如果不是,那麼你創建該類的一個實例,然後在該實例上調用該函數。
$obj = new ClassName();
$obj->myFunction();
正如您可以猜到的功能是靜態意味着你可以把它無需創建實例。例如,如果您有一個Math類,並且想要定義一個函數來獲取參數來計算它們的總和,那麼這很有用。創建Math的一個實例並不會有用,因此您可以聲明爲靜態並以此方式使用它。
這裏有一個鏈接到文檔進一步信息
試試這個。
class ClassA {
public function functionX() {
$classB = new ClassB();
echo $classB->functionY();
}
}
class ClassB {
public function functionY() {
return "Stahp, no more OO, stahp!";
}
}
如果函數y是靜態的,你可以調用ClassB的::函數y()。否則,您必須先創建B類的實例。像:
$instance = ClassB;
$instance->functionY();
但也許你的意思是別的嗎?
類功能?一個靜態方法?
如果你有一個實例(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;
}
}
看起來像你的類的人有一個依賴於另一個問題:
<?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
}
因爲'好'在技術文本方面非常不明確。有些人通過篩選最硬的手冊來學習,而其他人則通過實例學得更好。 –
@NeilMasters - 有各種各樣的教科書 - 所以一個好的是你的學習風格 –
我同意@EdHeal這是基本的面向對象,一本好書會解釋它比我們任何人都可以更好 – meda