Php SugarCRM:直接Bean属性访问与getFieldValue

Php SugarCRM:直接Bean属性访问与getFieldValue,php,orm,javabeans,sugarcrm,Php,Orm,Javabeans,Sugarcrm,在SugarCRM的现代版本中,将数据加载到bean对象之后 $account = BeanFactory::getBean('Accounts') ->retrieve_by_string_fields(array('name'=>'Q.R.&E. Corp')); 您可以通过直接访问属性来获取数据 $account->name 或者使用getFieldValue $account->getFieldValue('industry')

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

$account = BeanFactory::getBean('Accounts')
->retrieve_by_string_fields(array('name'=>'Q.R.&E. Corp'));            
您可以通过直接访问属性来获取数据

$account->name
或者使用
getFieldValue

$account->getFieldValue('industry')

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

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

啊,最重要的“不要抛出PHP错误”——这是有道理的。很好的澄清@tommymay——尽管用“抛出错误”来表示“引发错误”或“发生错误”是一种不幸的常见说法。为了保持日志和开发模式的干净,将警告视为错误也是很常见的(至少在PHPLAND中是这样),这意味着警告/错误最终归为同一类。