【发布时间】:2010-09-20 12:15:24
【问题描述】:
有没有办法告诉 PHP 如何将你的对象转换为整数?理想情况下,它看起来像
class ExampleClass
{
...
public function __toString()
{
return $this->getName();
}
public function __toInt()
{
return $this->getId();
}
}
我知道它不支持这种确切的形式,但有没有简单(不那么老套)的解决方法?
---------------------- 编辑 编辑 编辑 ---------- --------
谢谢大家!我正在研究这个的主要原因是我想让一些类(表单生成器、菜单类等)使用对象而不是数组(uniqueId => 描述)。如果您决定它们只适用于这些对象,或者只适用于扩展某种通用对象超类的对象,这很容易。
但我想看看是否有中间道路:理想情况下,我的框架类可以接受整数字符串对,或者带有 getId() 和 getDescription() 方法的对象。因为在我想使用 stackoverflow 的综合知识来确定是否有一种标准/最佳实践方式来执行此操作 与 php 标准不冲突之前,这是其他人必须发生的事情库、通用框架等。
【问题讨论】:
-
我不知道 PHP 怎么知道区别? __toString() 用于直接输出对象时,而不仅仅是类型转换。
-
你可以做一个“对象”类,就像在 Java 中一样,并从它派生所有东西,然后实现一个可覆盖的方法。
-
@Phil 幸运的是我使用的是 5.3,所以我不再有这个问题 :) php.net/manual/en/…
-
一种可能的情况是将一个对象与一个 int 进行比较:if ($myPseudoInt > 1) - 这会导致一个通知:“PseudoInt 类的对象无法转换为 int”。使用 __toInt() 方法来允许这种比较而无需显式转换会很漂亮。
-
我们仍在等待,但也许有一天:wiki.php.net/rfc/object_cast_to_types
标签: php