[英]PHP Access Class from Another class with Initializer
好的,所以我要構建一個依賴Zend PHP的Web應用程序。
在必須閱讀所有內容以描述我的嵌套函數之前,我需要的是能夠將一個函數從一個類調用到另一個類,而這兩個類都不能擴展到另一個類,而已經擴展了db構造函數,它們都是由調用的獨立文件一個主要的初始化腳本....(?)...在此先感謝您,以下是我的意思更好的示例。
我的HTML頁面稱為“主”包含列表,該列表初始化並創建我所有類的所有實例,以便所有頁面都可以通用訪問這些功能。 即require('app_init.php');
這是app_init.php
的最重要摘錄:
require_once('class-general.php');
require_once('class-users.php');
require_once('class-identities.php');
$general = new General();
$users = new Users($db);
$iden = new Iden($db);
$general
是我使用的愚蠢通用函數以及所有類都可以從中擴展的DB構造函數的基礎。
<?php
class Users extends General{
public function getUserID(){....random block of auth code.... return $randomID#; }
}?>
<?php
class Iden extends General{
public function do_random_change_to_db($with_me){
....random prepared function using $with_me....
$this->logger->log("Someone with UserID: ". /*((?$this?) HERE:)*/ FIXME->getUserID() . " did something : ".$with_me ."." , Zend_Log::INFO);
$success="gucci";
return $success;
}
}?>
現在,我被拋出致命錯誤的PHP錯誤:在...中調用未定義的方法Iden :: getUserID()
最好的方法是什么? 我試圖將一個類文件與另一個類一起包含,但是我確實不想創建$FIXME= new Users();
要么節省內存空間。 老實說,我也不願在這個時候不再擴展其他課程。
先感謝您。
如果getUserID
方法不依賴於任何實例狀態(盡管您沒有完全清楚它看起來也不像),那么將其設置為靜態將允許您這樣調用它:
Users::getUserID();
如果它確實取決於實例狀態,則需要在Users
類的實例上調用它。
在我看來, General
的方法實際上也應該是static
,甚至應該是類外部的自由函數。 請記住:類用於封裝狀態。 如果沒有需要封裝的狀態,請使用類(靜態)方法或簡單函數。 不要通過引入對象和繼承來使代碼不必要地復雜化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.