Câu hỏi về bản chất là phát triển các plugin php có thể tải động trong php không gây nhiễu với các plugin khác hoặc mã chính.
Cách duy nhất tôi biết sẽ yêu cầu bạn thiết kế lại class_lib.php ban đầu và tạo lớp 'Plugin' hoạt động như lớp proxy sẽ thực hiện mọi cuộc gọi hàm/phương thức thực hiện một phiên bản php mới và chuyển đối số hàm với một cuộc gọi json_decode và sau đó lặp lại phản hồi với json_encode.
function proxyExternalFunction($fileName, $functionName, $args, $setupStatements = '') {
$output = array();
$command = $setupStatements.";include('".addslashes($fileName)."');echo json_encode(".$functionName."(";
foreach ($args as $arg) {
$command .= "json_decode('".json_encode($arg)."',true),";
}
if (count($args) > 0) {
$command[strlen($command)-1] = ")";//end of $functionName
}
$command .= ");";//end of json_encode
$command = "php -r ".escapeshellarg($command);
exec($command, $output);
$output = json_decode($output,true);
}
này sẽ phải được thực hiện cho tất cả các chức năng đơn/gọi phương thức thông qua một lớp proxy ... không phải như vậy hiệu quả, và nó sẽ không bao giờ làm việc cho các đối tượng/mảng kết hợp giữ tham chiếu đến các tài nguyên hoặc biến unserializable khác tài liệu tham khảo.
Một tùy chọn khác hiệu quả hơn là http://www.php.net/runkit cho phép bạn tương tác với một phiên bản chạy dài được nhúng trong php.
Bạn nên giải thích những gì bạn đang cố gắng hoàn thành hoặc cụ thể hơn lý do tại sao. Bạn chỉ có thể phục hồi đối tượng bằng cách dỡ và tải lại định nghĩa lớp. – mario
Sẽ tải lại tập lệnh? – Rob
Tại sao một phiên bản "MyClass() mới" sẽ không hoạt động? – lepe