是否有__toString()的等价整数

Mic*_*erx 22 php

有没有办法告诉PHP如何将对象转换为int?理想情况下,它看起来像

class ExampleClass
{
    ...

    public function __toString()
    {
        return $this->getName();
    }

    public function __toInt()
    {
        return $this->getId();
    }
}
Run Code Online (Sandbox Code Playgroud)

我意识到它不支持这种确切的形式,但有一个简单(不那么hacky)的解决方法吗?

----------------------编辑编辑编辑------------------------- ----

谢谢大家!我正在研究的主要原因是我想制作一些类(表单生成器,菜单类等)使用对象而不是数组(uniqueId => description).如果您认为它们只应该与这些对象一起使用,或者只对那些扩展某种通用对象超类的对象起作用,那么这很容易.

但我试图看看是否存在中间道路:理想情况下,我的框架类可以接受整数字符串对,或者接受带有getId()和getDescription()方法的对象.因为在我想使用stackoverflow的综合知识来确定是否有一种标准/最佳实践方法与php标准库不冲突之前,这是其他人必须要发生的事情,所以框架等.

use*_*395 8

我担心没有这样的事情.我不确定你需要这个的原因是什么,但请考虑以下选项:

添加一个toInt()方法,在类中强制转换.你可能已经意识到了这一点.

public function toInt()
{
    return (int) $this->__toString();
}
Run Code Online (Sandbox Code Playgroud)

在类外部进行双重转换,将导致int.

$int = (int) (string) $class;
Run Code Online (Sandbox Code Playgroud)

在课外做一个特殊的功能:

function intify($class)
{
    return (int) (string) $class;
}
$int = intify($class);
Run Code Online (Sandbox Code Playgroud)

当然__toString()方法可以返回一个带有数字的字符串:toInt().类外部的用法可能会将此字符串自动转换为整数.

  • 这就是接口的用途,对吧?spl_object_hash()为每个对象返回唯一的id.但问题很好. (2认同)