在C++中,我這樣的代碼:你能在PHP的類之外編寫一個類函數嗎?
//foo.h
class cBar
{
void foobar();
}
//foo.cpp
void cBar::foobar()
{
//Code
}
我試圖做到這一點的,但是PHP解析器會抱怨。 PHP的文檔也沒有幫助。這可以在PHP中完成嗎?
在C++中,我這樣的代碼:你能在PHP的類之外編寫一個類函數嗎?
//foo.h
class cBar
{
void foobar();
}
//foo.cpp
void cBar::foobar()
{
//Code
}
我試圖做到這一點的,但是PHP解析器會抱怨。 PHP的文檔也沒有幫助。這可以在PHP中完成嗎?
號您需要包括類塊內所有的函數定義。如果在一個單獨的結構中定義你的函數使你感覺更好,你可以使用一個接口。
interface iBar
{
function foobar();
}
class cBar implements iBar
{
function foobar()
{
//Code
}
}
我建議只是習慣以新的方式進行編碼。使用單一語言編碼很容易,但我認爲如果你想要在不同的語言中做同樣的事情,那麼你就是在拼命地戰鬥。
你不能以相同的方式做到這一點。不過,您可以使用class abstraction和interfaces。兩者之間的主要區別在於,接口不允許指定函數體,抽象對象中的抽象方法(非抽象)可以容納各種默認行爲。
抽象:
abstract class cBar
{
// MUST be extended
abstract protected function foobar();
// MAY be extended
protected function someMethod()
{
// do stuff
}
}
class cBarExtender extends cBar
{
protected function foobar()
{
// do stuff
}
}
接口:
interface cBar
{
// MUST be implemented
protected function foobar();
}
class cBarImplementation implements cBar
{
protected function foobar()
{
// do stuff
}
}
語言並沒有真正提供此功能,但如果你真的想它,您可以安裝ClassKit擴展,它可以讓你在運行時做一些動態類修改。
每個人都給出了很好的答案。但是我已經選擇了你的答案,因爲這個引用:在一種語言中很容易編碼,但是我認爲如果你想要在不同的語言中做同樣的事情,你就是在爭奪一場失敗的戰鬥。 – MrValdez 2008-11-26 08:39:19