簡體   English   中英

來自帶有初始化器的另一個類的PHP Access類

[英]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);

--- class-general.php

$general是我使用的愚蠢通用函數以及所有類都可以從中擴展的DB構造函數的基礎。

---- class-users.php

<?php 
class Users extends General{
public function getUserID(){....random block of auth code....  return $randomID#; }
}?>

----- class-identities.php

<?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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM