1

私はこのようないくつかのコードを持っています:

function getAuthorizedPFComponents($pfState)
    {
        $authorizedPFComponents = new \stdClass();
                                                                                                           $compTypeMap=array('platform'=>'pfAuthorizations','mainSite'=>'mainSiteAuthorizations','microSites'=>'microSiteAuthorizations','apps'=>'appAuthorizations');
        foreach($compTypeMap as $compType=>$tagName)
        {
            $authorizationsNode=$this->pfAuthXMLDOM->getElementsByTagName($tagName)->item(0);
            foreach($authorizationsNode->getElementsByTagName('authorizations') as $pfComponentAuthElem)
            {
                foreach($pfComponentAuthElem->getElementsByTagName('allow') as $allow)
                {

                    switch($allow->getAttribute('orgCode'))
                    {
                        case 'K_ALL':
                        {
                            $authorizedPFComponents->$compType->{$pfComponentAuthElem->getAttribute('pfComponentCode')}->storeCode=$allow->getAttribute('storeCode');
                           }

                        }

次の警告が表示されます。

Warning: Creating default object from empty value 

警告は、以下のコードにまでさかのぼりますcase K_ALL:

4

1 に答える 1

0

これは単なるコメントとしては長すぎたので、役に立たなくなったら削除します。

最初にすべきことは、コードを単純にすることです。その1つのステートメントで多くのことが起こっています:

$compCode = $pfComponentAuthElem->getAttribute('pfComponentCode');
$storeCode = $allow->getAttribute('storeCode');

デバッグ コードを追加します。

var_dump($authorizedPFComponents->$compType);
var_dump($authorizedPFComponents->$compType->$compCode);

$authorizedPFComponents->$compType->$compCode->storeCode = $storeCode;

次のコードを検討してください。

$x->y = 'test';

が定義されていない場合$x、警告が発行されます。

Warning: Creating default object from empty value in xxx

一連の参照についても同じことが言えます。

$authorizedPFComponents->$compType->$compCode->storeCode

これらのパスのいずれかが空の場合、次のパスで->yyyその警告が発生します。

于 2012-11-14T10:15:40.423 に答える