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 を受け取り、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

元の答えは「エラーをスローする」と言っており、プログラミングの世界では「スロー」は、「キャッチ」されない場合、アプリケーションにとって致命的な可能性がある例外を取得できることを意味するため、明確にしたかっただけです。

于 2016-11-29T22:30:06.490 に答える