如何用自定义函数文件对另一个php里的函数重写

ziluopao 发布于 2016/11/04 20:34
阅读 523
收藏 1
PHP

为了不修改程序的系统文件,防止以后升级后修改过的文件会给升级时覆盖,所以想自己新建一个自定义函数库文件:extention.php ,在系统运行时 include这个extention.php进去,这样就可以在extention.php 里面对系统函数进行修改也可以在extention.php里面写自己的函数。

比如
有这样3个php文件
a.php 系统的函数库文件,不可以修改它
extention.php 自己自定义的函数库文件,随便添加和修改
result.php 调用函数库里面的方法文件

a.php
function show()
{
$str = 'this is a';
return $str;
}

extention.php 我在里面也写一个 show()的函数,想去修改a.php里面的show()方法
function show()
{
$str = 'this is my extention a';
return $str;
}

result.php 这里include了上面2个php文件,并调用show()方法
include 'a.php';
include 'extention.php';

$result = show();
echo $result;

这样访问result.php 会报 Cannot redeclare的错误。

网上找了资料说可以用 命名空间,但是好像效果不是我想要的。
我是想不去动系统的函数库文件,比如上面的那个a.php;只修改我的extention.php自定义函数库文件,从而能对a.php里面的函数进行修改。不知道能否做到呢?

更多0


加载中
0
tiancheng9
tiancheng9

参考: 

http://stackoverflow.com/questions/3620659/is-it-possible-to-overwrite-a-function-in-php

http://php.net/manual/en/function.override-function.php

结论:

  不能.  虽然依赖APD PECL extension能实现你的需求, 但这扩展不可靠, 没法线上使用.

0
ziluopao
ziluopao
回答的一点逻辑也木有,啥玩意啊
0
tiancheng9
tiancheng9

引用来自“ziluopao”的评论

回答的一点逻辑也木有,啥玩意啊
呵呵.. 看不懂?那当我没说.
0
jiuhecai
jiuhecai

一楼回答的太客观了。说的是事实,但是我真的不喜欢这样的事实。

虽然依赖APD PECL extension能实现你的需求, 但这扩展不可靠, 没法线上使用.

我依然在网上找办法...

0
黑胡椒大侠
黑胡椒大侠

你不要用库函数就好了,直接调用你自己需要的函数就行了。为啥非要修改库函数呢?

返回顶部
顶部