SugarCRM:直接Bean属性访问vs. getFieldValue


SugarCRM: Direct Bean Property Access vs. getFieldValue

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

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

可以通过直接访问

属性来获取数据
$account->name

或使用getFieldValue

$account->getFieldValue('industry')

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

我看到的唯一区别是,如果字段不存在,它不会抛出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;
}

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

用这个例子来证明PHP错误不会被抛出,可能是一个警告,但不是致命的。

<?php
class TestClass {
    public $one = 1;
}
$testClassInstance = new TestClass();
var_dump($testClassInstance->one); // Result = int(1)
var_dump($testClassInstance->two); // Result = NULL

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