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