【发布时间】:2012-03-01 21:17:28
【问题描述】:
我正在寻找一种方法来扩展 PHP 类以添加自定义方法。特别是我想向 MongoDate 添加一个日期格式方法(来自 PHP MongoDB 驱动程序)。
我只是认为如果从 Mongo 集合中接收到的 MongoDate 对象提供了一种使其可读的方法,并且不需要调用函数或类来做到这一点,它会更简洁。
$d = new MongoDate();
some_date_format($d); // the way it works now
$d->format(); // the way it would be cleaner
有什么解决办法吗?
【问题讨论】:
-
继续阅读php object inheritance :-)
-
同样,我希望从
MongoCollection::find();收到的对象也受到影响。如果我只是将从 find 收到的 MongoDate 转换为我的新课程,它是否有效? -
适配器模式在这里可能更合适。看看:c2.com/cgi/wiki?AdapterPattern
-
谢谢,这个模式看起来很适合这个目的。但我想,由于 PHP 是如此动态,所以会有一种方法来添加一个新方法(我猜 C++ 可以做到这一点,我不确定了)
-
我刚刚找到了php.net/manual/en/function.runkit-method-add.php,但我想这是个坏主意,runkit PECL 的最后一个版本是 2006 年。我还是会试一试!