php函数混乱一直被人笑柄, 似英文非英文, 似有意实无意, 各式各样的函数名字. 不过, php函数算是基础中的核心, 不记住一些函数, 工作起来肯定不轻松, 你是想一次性用脑, 还是每次都费脑去寻找用哪个函数呢? 是种智慧.
不过, 随着php版本叠加更新后, 函数问题日益严重, 碎片化, 断层化严重. 即生亮何生喻呢. 这表明php开发组的设计思维是缺少的. 没有微软的那种远见, 微软的javascript, C#, sql都非常具有远瞻性, 各式各样的扩展打得火热. php就弱了.
相比java来说, php是简易快速了许多, 可仍然不能说php开发组从java思维中跳出来了.
1: 函数的定义返回混乱.
虽然php是弱类型, 但基础的返回值其实是可以控制的, 可显然开发组没有去这样做, 比如strpos, 搜索不到时, 返回false, 搜索到了却不是true. 这就让人困惑, 需要去记住每个函数的使用方法与返回值类型. 其实统一的返回类型值是非常值得学习的, 这对于程序后续的判断会简易很多, 程序理应多采用量等===判断, 而不是非等!= 来判断, 非等判断显然难以把握会有多少种情况.
2: 函数分散碎片.
众多的字符函数都以str开头, 也有以sub开头, 也有例外. shuffle(), str_shuffle(),这两个函数, 你能够一眼知道是什么作用? 并且shuffle函数为&array引用调用, 成功时返回 TRUE , 或者在失败时返回 FALSE . 或许我们会问, 就数组参数, 会出现返回false的情况吗? 这些函数的缺项都给了phper一种灵感, 需要去重写函数.
3: 不能重载.
增加再多的php新功能, 或者也不及把函数或类重载功能开发出来. 虽然现在许多人利用call_user_func_array来实现, 可仍然不是特别完美, 比如 get_defined_vars() 你怎么call? 函数还带有局域性, 这跟函数的特性有冲突, 明明是超全局的.
在放弃一些特性之后, php还是可以完美的重写所有的函数的. 比如上面的shuffle(), str_shuffle()函数, 你就可以合并为 max_shuffle(), 参数可以接收字符或者数组, 实现多态函数. 重新归类所有函数, 比如字符类的, 以str_开头, 数组arr_ 是为了在编写程序时, ide提示更加全面.
个人建议不要直接使用任何一个函数, 全部用个中转函数承接调用函数的工作, 如以下代码.
define('FUC_STRLEN', 'strlen');
// 没有参数定义, 以支持更多可能性.
function __(){
$funage = func_get_args();
$funname = $funage[0];
unset($funage[0]);
$fundata = call_user_func_array($funname, array_values($funage));
return $fundata;
}
__(FUC_STRLEN, 'my string');