![](/img/trans.png)
[英]Can I create a PHP class that can't have properties added to it dynamically at run-time?
[英]PHP can I create an object of the class if I dynamically have access to the codes of class?
這有點奇怪,但是我想創建一個存儲在另一個文件中的類的對象,我有文件的路徑,但沒有類的名稱。 場景是,目錄中存儲了許多文件,每個文件僅包含一個類。 在此目錄之外的是另一個文件,在該文件中,我正在開發一個函數,該函數采用文件名,訪問文件並從中獲取代碼,然后在該文件中創建該類的對象並返回該對象。 我確信這是有可能的,但無法使其正常工作。 有誰能夠幫助我 ?
在使用array_diff()
包含文件之前和之后比較get_declared_classes()
的結果:
<?php
$before = get_declared_classes();
include_once('path/to/file');
$after = get_declared_classes();
$newClasses = array_diff($after, $before);
for ($i = 0; isset($newClasses[$i]); $i++) {
${'class'.$i} = new $newClasses[$i];
echo "New class $newClasses[$i] instantiated in variable \$class$i\n";
}
這很簡單,但不是很安全。
1.將源文件加載為文本,匹配正則表達式的內容,該正則表達式將以$ classname返回類的名稱。
2.根據源代碼文本進行任何必要的檢查,以確保在“加載過程”中需要此類,例如提取構造函數參數。
require_once('the_file.php')
$ my_new_instance = new $ classname()(假設您沒有構造函數參數)或$ my_new_instance = new $ classname($ param1,$ param2),前提是您已從源分析階段提取了參數$ param1,$ param2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.