簡體   English   中英

PHP-重置自動加載和聲明的類

[英]PHP - reset autoload and declared classes

在PHP中,我有一個函數可以根據在父站點中選擇哪個子站點來設置自動加載器。

使用spl_autoload_unregister函數可以很好地重置自動加載器。

但是,我注意到的是,當我加載在子站點之前已啟動的類文件時,在重置自動加載器后仍使用此“舊”類文件。

例:

父站點從c:\\parent\\site\\RouterClass加載example\\namespace\\RouterClass c:\\parent\\site\\RouterClass

然后,我重置所有自動加載器並啟動子站點,並為子站點設置正確的自動加載器。

然后,子站點將加載example\\namespace\\RouterClass但不是通過新的自動加載器從c:\\child\\site\\RouterClass獲取此文件,而是從父站點定義的舊文件中獲取該類。

我看到通過函數注冊的類:

get_declared_classes()

但是我無法重置此變量列表。 如果可以重置該類緩存,則PHP必須開始對此RouterClass的新搜索,並將檢查子站點自動加載器以找到它。

我檢查的第二個選項是runkit_method_redefine ,但是對於類似runkit_class_redefine類,沒有類似的功能。

有誰知道如何重置已聲明的類列表? 或者如何在不重命名子站點的所有名稱空間的情況下實現上述目的。

不可能。 一旦聲明了一個類,它就永遠存在。

如果需要動態定義自動加載器,則需要在任何受影響的類加載之前進行定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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