Kaldırıldı PHP fonksiyon dönüş değeri iç içe dizi

2 Cevap php

Ben veritabanındaki kullanıcı nesneleri bir koleksiyon oluşturur bir işlevi vardır:

public static function GetUsersByGroup($instanceID, $groupID)
{               
    $col = null;
    if($groupID != null) 
    {
        $col = UserGroup::GetCollection("User" ,_DB_GET_ALL_INSTANCE_USERGROUP_MEMBERS,array ($instanceID, $groupID));
    }
    else
    {
        $col = UserGroup::GetCollection("User" ,_DB_GET_ALL_INSTANCE_NOGROUP_MEMBERS,$instanceID);
    }
    echo "this is the collection I am going to return: <pre>";
    print_r($col);
    echo "</pre>";
    return $col;
}

Yöntem altındaki bazı hata ayıklama çıkışı var, ama gelin ben null groupid param yani ile bu yöntemi çağırırsanız o ben büyük olan, alması beklenen koleksiyon güzel bir göstergesi yazdırır, ikinci koşulu çalışır olduğunu.

Ancak ..

İşte benim çağrı yöntemi:

             echo "<br> Collection passed through is: </br>";
             $collection =  UserGroup::GetUsersByGroup($this->GetInstance()->id,$grouplist->GetCurrentCommandParam());
             print_r($collection);
             $userlist->UpdateCollection($collection);
             $userlist->DeSelect();

Intresting şey çıktı:

  this is the collection I am going to return: 
Collection Object
(
    [_valueType:protected] => User
    [_isBasicType:protected] => 
    [_validateFunc:protected] => 
    [_collection:protected] => Array
        (
            [0] => User Object
                (
                    [valid] => 
                    [validationMessage] => 
                    [id] => 29
                    [table:private] => user
                    [fields:private] => Array
                        (
                            [title] => mrs
                            [fname] => Kirsty
                            [lname] => Howden
                            [email] => kirsty2@softyolk.com
                            [password] => xxxxxxxx
                            [lastlogin] => 2009-07-05 15:20:13
                            [instanceID] => 2
                            [deliveryAddress] => 
                            [invoiceAddress] => 
                            [tel] => 01752848484
                            [isAdmin] => 0
                            [disabled] => 0
                            [mustAuthorise] => 
                            [usergroupID] => 
                        )

                    [validationRules:private] => Array
                        (
                        )

                    [_profileStartTime:protected] => 
                    [_profileTag:protected] => 
                )

            [1] => User Object
                (
                    [valid] => 
                    [validationMessage] => 
                    [id] => 31
                    [table:private] => user
                    [fields:private] => Array
                        (
                            [title] => master
                            [fname] => Seb
                            [lname] => Howden
                            [email] => seb@antithug.co.uk
                            [password] => xxxxxxxxx
                            [lastlogin] => 2009-07-09 02:02:24
                            [instanceID] => 2
                            [deliveryAddress] => saltash
                            [invoiceAddress] => saltash
                            [tel] => 8908908
                            [isAdmin] => 0
                            [disabled] => 0
                            [mustAuthorise] => 
                            [usergroupID] => 
                        )

                    [validationRules:private] => Array
                        (
                        )

                    [_profileStartTime:protected] => 
                    [_profileTag:protected] => 
                )

        )

)

Collection passed through is: 
this is the collection I am going to return: 
Collection Object
(
    [_valueType:protected] => User
    [_isBasicType:protected] => 
    [_validateFunc:protected] => 
    [_collection:protected] => Array
        (
        )

)
Collection Object ( [_valueType:protected] => User [_isBasicType:protected] => [_validateFunc:protected] => [_collection:protected] => Array ( ) )

Döndürülen nesne değiştirilmiş oldu?

GetUsersByGroup yöntem userGroupID yani ilk dava ile denir, sonra çıktı beklenen tüm gibidir.

I yöntemi koşullu kaldırmak ve sadece beklendiği gibi $col = UserGroup::GetCollection("User" ,_DB_GET_ALL_INSTANCE_NOGROUP_MEMBERS,$instanceID); tüm çıkış olduğunu döndürür. Ise

Bu başka bir koşul doğru yürütür ve ardından dönüş bozuk olduğu görünüyor, ancak bu sadece başka bir durumun mevcut olup olmadığını, başka koşulunu kaldırmak ve sadece başka durumda yöntem çağrısı sonucu dönmek olur, ve tüm gibidir bekleniyor.

Herhangi bir fikir lütfen?

Teşekkürler

KullanıcıGrubu :: GetCollection Yöntem EKLENDİ (bu olsa derin bir tavşan deliği olduğunu gidebiliriz)

protected static function GetCollection($class, $sqlID, $params = null)
{
    $dal = DAL::GetInstance(); //not to be confused with the Instance object, this is an instance of DAL        

    $collection = new Collection($class);
    $items = $dal->QueryForAssoc($sqlID,$params);

    foreach($items as $item)
    {
          $itemObject = new $class();
          $itemObject->LoadFromList($item);
          $collection->add($itemObject);
    }

    return $collection;        
}

Ayrıca follwing açıklığa kavuşturmak için çalışıyor ::

public static function GetUsersByGroup($instanceID, $groupID)
{               
    $col = null;
    //if($groupID != null) 
    //{
        //$col = UserGroup::GetCollection("User" ,_DB_GET_ALL_INSTANCE_USREGROUP_MEMBERS,array ($instanceID, $groupID));
    //}
    //else
    //{
        $col = UserGroup::GetCollection("User" ,_DB_GET_ALL_INSTANCE_NOGROUP_MEMBERS,$instanceID);
   // } 
   return $col; 
}

Hattı başka bloğunda ise sadece sorunu görmek.

2 Cevap

Yöntem ikinci çağrı diğer koşulunu kullanarak ve boş bir koleksiyon (sonuç sorun) dönen, iki defa çağrıldığını çıkıyor.

Her durumda bir yankı ayarlayarak ben dedikleri gibi görebiliyordu ve ilk boş durumda olmayan boş sonra adlandırılırlar.

Gerçek bir hata Ben aynı postback iki kez yöntemini çağırarak durumsal bir liste vardı olmasıdır. Yakalamak zor.

Seyir için teşekkürler

Burada olasılıkla sorun UserGroup::GetCollection işlevi yatıyor. PHP 5 referans olarak tüm nesneleri geçer, böylece bu nesneleri alınıyor yol dayalı bu rutin değişiklik her türlü yapıyorsa, o zaman bu değişiklik UserGroup::GetCollection bittikten sonra da devam edecektir.

Ben dikkatle bu iki fonksiyon çağrıları arasındaki farklılıkları incelemek ve emin hiçbir nesne oluyor UserGroup::GetCollection değişiklikler var olur.

$col = UserGroup::GetCollection("User" ,_DB_GET_ALL_INSTANCE_USERGROUP_MEMBERS,array ($instanceID, $groupID));

vs

$col = UserGroup::GetCollection("User" ,_DB_GET_ALL_INSTANCE_NOGROUP_MEMBERS,$instanceID);