你们如何组织你的随机函数来改进OOP类(全局函数)之外的语言功能?
我见过图书馆,但我仍然没有出售这是一个很好的解决方案,特别是如果你没有足够的功能.我特别感兴趣的是人们如何组织随机的PHP和JavaScript函数.
我尽量避免在全局命名空间中声明函数.我这样做的极少数情况是,添加不在我的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) { /* ... */ } } };
通用框架通常也实现了创建命名空间的功能.