php - "random utility functions"上的优雅实践

标签 php javascript organization

<分区>

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

我看过库,但我仍然不相信这是一个很好的解决方案,尤其是当您没有足够的功能时。我对人们如何组织随机的 PHP 和 JavaScript 函数特别感兴趣。

最佳答案

我尽量避免在全局命名空间中声明函数。我这样做的极少数情况是,例如,添加不在我的 PHP 版本中的函数的用户态实现时

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

这样的函数可以放在 compatibility.php 中,它会包含在引导文件中,因此它们在整个应用程序中都可用,并且检查 function_exists 确保我不会遇到问题一旦 PHP 版本具有对该函数的 native 支持。

对于所有其他功能,我会先尝试看看它们是否不能转到专用对象上。通常,“随机”函数只是放错了地方。查看哪些对象使用您的实用程序函数,然后查看是否可以将方法移到那里。也许有一个父类(super class)等着出来。另见 Information Expert pattern .

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

在 5.3 之前,我将它们分组 following the PEAR naming convention并在您的文件夹结构后添加类名前缀,例如,如果模块位于 com/mattmueller/utils.php 中,您将使用

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

从 PHP5.3 开始,我们得到了真正的 namespaces你可以做到

namespace com\mattmueller\Utils;

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

在 Javascript 中你没有命名空间但是可以 easily simulate them通过将函数添加到对象,例如

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

常见的框架通常实现creating namespaces的功能

关于php - "random utility functions"上的优雅实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2215575/

相关文章:

php - 不需要在 MySQL 中精确搜索

javascript - 在 ASP.NET MVC 中组合和缩小 JS 和 CSS

javascript - 将日期从一个函数传递到下一个函数

backbone.js - 辅助函数在 Backbone 中的位置

c - 在结构体中组织变量是否有任何陷阱

php - 使用iframe防止自动下载文件并以php形式显示文件

php - 带有 Xampp 错误的符号链接(symbolic link)

php - 使用 php 的输出执行 python 脚本

javascript - 突出显示 jQuery 中单词之间的空白

android - 通过文件夹组织drawable-hdpi(mdpi、ldpi等)的内容