<分区>
你们如何组织随机函数来改进 OOP 类(全局函数)之外的语言功能?
我看过库,但我仍然不相信这是一个很好的解决方案,尤其是当您没有足够的功能时。我对人们如何组织随机的 PHP 和 JavaScript 函数特别感兴趣。
<分区>
你们如何组织随机函数来改进 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/