1

在现代版本的 SugarCRM 中,将数据加载到 bean 对象后

$account = BeanFactory::getBean('Accounts')
->retrieve_by_string_fields(array('name'=>'Q.R.&E. Corp'));            

您可以通过直接访问属性来获取数据

$account->name

或通过使用getFieldValue

$account->getFieldValue('industry')

有什么历史原因getFieldValue存在吗?是否有一种规范的方式来决定何时使用getFieldValue与直接对象属性方法?

4

2 回答 2

1

我看到的唯一区别是,如果该字段不存在,它不会抛出 PHP 错误,如果它是一个布尔值,它将把它转换为一个整数。见函数定义...

function getFieldValue($name)
{
    if (!isset($this->$name)){
        return FALSE;
    }
    if($this->$name === TRUE){
        return 1;
    }
    if($this->$name === FALSE){
        return 0;
    }
    return $this->$name;
}
于 2013-03-15T14:22:14.450 回答
1

我知道这很旧,但我想澄清一下,如果属性不存在,PHP 不会抛出错误。直接访问属性和使用 getFieldValue 方法的唯一区别是,您将收到 NULL 与属性和 FALSE 与 getFieldValue 方法。

以这个例子来证明 PHP 错误没有被抛出,也许是一个警告,但没有什么致命的。

<?php

class TestClass {
    public $one = 1;
}

$testClassInstance = new TestClass();

var_dump($testClassInstance->one); // Result = int(1)
var_dump($testClassInstance->two); // Result = NULL

只是想澄清一下,因为原始答案说“抛出错误”,而在编程世界中,“抛出”意味着您可能会得到一个异常,如果不“捕获”,这可能对您的应用程序是致命的。

于 2016-11-29T22:30:06.490 回答