2010-05-17 18 views
8

Trong PHP 5.3 có cách đổi tên hàm hoặc "móc" hàm.Đổi tên hàm trong khi chạy trong PHP

rename_function() trong "APD" đã bị hỏng kể từ ~ 2004. Nếu bạn cố gắng và xây dựng nó trên PHP 5.3 bạn sẽ nhận được lỗi này:

'struct _zend_compiler_globals' has no member named 'extended_info'

Đây là một lỗi rất dễ dàng để sửa chữa, chỉ cần thay đổi dòng này:

GC(extended_info) = 1;

để

CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

Tôi đã sửa đổi php.ini và APD hiển thị trong phpinfo() như tôi t nên. Tuy nhiên khi tôi gọi rename_function() trang PHP không tải và tôi nhận được lỗi phân đoạn trong số /var/log/apache2/error.log của mình.

Có cách nào để khắc phục APD để làm việc với phiên bản PHP hiện đại không? Hoặc là có một phương pháp để đổi tên các chức năng? Tại sao trên trái đất là tính năng quan trọng không có trong php! ??!?! (Gotta yêu python :)

+0

Tôi biết câu hỏi này hơi cũ, nhưng bạn có thể chỉ cho tôi mã của bạn không? – Glaslos

+0

@Glaslos theo như tôi biết không có tác phẩm nào khác hoạt động nữa. – rook

+0

Tôi được APD làm việc. Vì vậy, có lẽ tôi có thể giúp bạn ... – Glaslos

Trả lời

2

Việc gia hạn runkit up-to-date có thể được tìm thấy trên http://github.com/zenovich/runkit Nó hỗ trợ tất cả các đương đại các phiên bản PHP được phát hành trong thời gian này (từ 4.4 đến 5.4+). Bộ công cụ này là chính thức và được hỗ trợ.

Trân trọng, Dmitry Zenovich

+0

Cảm ơn bạn! Đây là một phần mở rộng hữu ích. – rook

2

Runkit trunk tương ứng với 5.3+.

 
svn checkout http://svn.php.net/repository/pecl/runkit/trunk runkit 
cd runkit 
phpize 
./configure 
make && make install 

Thêm extension = runkit.so để php.ini (hoặc runkit.ini trong conf.d)

Để sử dụng runkit_function_rename() bạn cũng sẽ cần phải biên dịch php với cờ --enable-maintainer-zts cấu hình. (Damn you zend!)

2

Tôi nhận thấy câu hỏi này hơi cũ, nhưng gần đây tôi đã tìm cách đổi tên các chức năng để thử nghiệm và gặp phải những khó khăn tương tự với APD.

Cuối cùng nhấn vào đúng truy vấn của Google và tìm thấy một tùy chọn khác: test_helpers extension của Sebastian Bergmann - nó có riêng rename_function() có vẻ hoạt động tốt, cũng như một số người trợ giúp hữu ích khác để chặn và chế nhạo mọi thứ.

Bonus - một tương đối không đau quá trình cài đặt:

$ pear channel-discover pear.phpunit.de 
$ pecl install phpunit/test_helpers 

Và sau đó thêm extension=test_helpers.so để php.ini của bạn

Các vấn đề liên quan