当前位置:  开发笔记 > 编程语言 > 正文

关于"随机效用函数"的优雅实践

如何解决《关于"随机效用函数"的优雅实践》经验,为你挑选了1个好方法。

你们如何组织你的随机函数来改进OOP类(全局函数)之外的语言功能?

我见过图书馆,但我仍然没有出售这是一个很好的解决方案,特别是如果你没有足够的功能.我特别感兴趣的是人们如何组织随机的PHP和JavaScript函数.



1> Gordon..:

我尽量避免在全局命名空间中声明函数.我这样做的极少数情况是,添加不在我的PHP版本中的函数的userland实现

if(false === function_exists('lcfirst'))
{
    function lcfirst( $str ) { /* ... */}
}

像这样的函数可以放在一个compatibility.php中,它将包含在一个bootstrap文件中,因此它们可以在整个应用程序和检查中使用,以function_exists确保一旦PHP版本具有对该函数的本机支持,我就不会遇到问题.

对于所有其他功能,我会尝试先看看他们是否不能使用专用对象.通常,"随机"功能只是放错地方.查看哪些对象使用您的实用程序函数,然后查看是否可以在那里移动方法.也许有一个超级等待出来.另请参阅信息专家模式.

如果没有这些方法可以继续使用的对象,您仍然可以将它们分组在一个名为Utils的静态模块中,该名称为唯一的命名空间,因此它们不会使全局命名空间混乱.这样,您可以确定您没有与全局范围内的其他第三方功能发生冲突.

在5.3之前,我会根据PEAR命名约定对它们进行分组,并在文件夹结构后面添加类名称前缀,例如,如果模块在com/mattmueller/utils.php,则使用

class Com_MattMueller_Utils
{
     public static function something($a, $b) { /* ... */ }
}

从PHP5.3开始,我们就拥有了真正的命名空间,你可以做到

namespace com\mattmueller\Utils;

class Utils
{
    public static function something($a, $b) { /* ... */ }
}

在Javascript中,您没有名称空间,但可以通过向对象添加函数来轻松地模拟它们,例如

// JavaScript
var com = (com) ? com : {};
com.mattmueller = {
    'Utils': {
        'something' : function(a,b) { /* ... */ }
     }
};

通用框架通常也实现了创建命名空间的功能.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有