SugarCRM:直接Bean属性访问与getFieldValue

时间:2013-03-14 23:15:10

标签: 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')

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

我知道这是旧的,但我想澄清一下,如果该属性不存在,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

只是想澄清一下,因为原来的回答是&#34;抛出错误&#34;在编程世界&#34; throw&#34;这意味着你可以得到一个例外,如果没有&#34;被抓住&#34;你的应用可能是致命的。