php hook core functions

大憨熊 提交于 2019-12-04 01:54:45

问题


I want to hook before execution / or replace standart core functions, for example i im going to prevent both include and require accesa to any scripts. Is any way to make it without any extra .dll's? Or another case is_array($myarr); i would be to hook at array($myarr) === $myarr; (looks like it is faster) to avoid creating extra classes and functions.

Ps and one more question : how to prevent all php execution after some moment? I have html templates with php parts <?=$myvar?> i want to prevent short sintax and execution at all when my script ends work, what i have to try?


回答1:


About hooks to standart functions: there is no way to do that without external modules. APD PECL module will do the job.

rename_function('require', 'internal_require'); // saving reference to original function
override_function('require', '$filename', 
                  'print "require called"; internal_require($filename);');

Second question is not very clear. Do you want to hook on standart is_array function, to array() lexical construct or (array) type casting?

About stopping php interpretation: have a look at __halt_compiler function. But keep in mind that succeeding blocks of php will be just embedded in HTML (thus visible to everybody).




回答2:


If you want to disable functions, you can use safe mode, but it is deprecated and not recommended. And as madfriend says, __halt_compiler just sends everything below it as text. Bear in mind that it can only be called from the outermost scope - I.e. not inside curly braces (if, loops, functions etc.)



来源:https://stackoverflow.com/questions/11710026/php-hook-core-functions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!