我想發明一個私人框架來構建未來的PHP應用程序。我的示例代碼是:如何從父類調用子類功能PHP
class system {
const token = "1234";
}
class data extends system {
public $driver = "mysql";
function get_name() {
if (parent::token == "1234") {
return "John";
}
}
}
class about extends system {
public $version = "10.1";
function get_build() {
if (parent::token == "1234") {
return "920";
}
}
}
我的問題是我可以調用包含類結構的子函數。我不知道這是什麼名字。我想像這樣。
$system = new system();
echo $system->data->driver; // Output "mysql"
echo $system->data->get_name(); // Output "John"
echo $system->about->version; // Output "10.1"
在LUA的代碼是這樣的:
system = {};
system.token = "1234";
system.data.driver = "mysql";
function system.data.get_name()
if (system.token == "1234") then
return "John";
end
end
system.about.version = "10.1";
function system.about.get_build()
if (system.token == "1234") then
return "920";
end
end
用法:
name = system.data.get_name() -- variable "name" value will be "John"
感謝。
編輯:
該代碼只是爲了展示一下我想要實現的,因爲我剛開始在PHP中的工作樣本。 Usualy我正在使用LUA。我的計劃是構建易於使用且易於理解的框架。所以人們將可以輕鬆地構建應用程序,並且可以輕鬆記住函數引用。例如:
$tbl_result = $system->data->select("name", "table", "id='10'");
該代碼而無需查詢用於容易選擇數據從數據庫。返回值是數組列表。此功能也會自動從配置中檢測數據庫驅動程序。所以用戶不需要在特定的驅動程序中知道SQL查詢。但是調用函數的方法應該是結構化的。爲什麼我必須使用system-> data->函數?因爲我將以root身份擁有系統,組件和模塊。那麼每個根都會有很多孩子。例如,系統將具有核心,數據,模型等。也許在每個根中將具有相同的子名稱。所以這就是爲什麼我必須建立這個結構。
是的,我知道這一點。這就是我通常所做的。但我想我的代碼結構很容易理解。如果我使用'$ system-> driver',那麼如果有人讀過這個代碼,他們會認爲「驅動程序」是系統驅動程序,而不是數據驅動程序。但是如果我可以使用像LUA('system.data.driver')這樣的結構,那麼讀取該代碼的人會認爲「驅動程序」是數據的孩子,而不是系統的孩子。如果在PHP中不可行,那麼我將使用一般方法。 :) – 2013-03-13 02:05:34