it-swarm-tr.com

Statik olmayan yöntem JUserHelper :: getProfile () statik olarak çağrılmamalıdır

Eski bir bileşende bazı kodları yeniden düzenliyordum ve bu uyarıyla karşılaştım:

Strict standards: Non-static method JUserHelper::getProfile() should not be called statically, assuming $this from incompatible context 

$ userProfile = JUserHelper :: getProfile ($ userId);

getProfile bildirilmediğinden static, JUserHelper soyut olduğu için uyarının teknik doğasını anlasam da, somutlaştırılamaz.

İlginçtir ki sınıftaki diğer tüm yöntemler static olarak tanımlanır. İmza farklı olduğu için 3.x'te olduğu gibi 2.5'te bana bir hata gibi görünüyor.

Peki profili almanın doğru yolu nedir?

5
Valentin Despa

Bu bir böcek.

Bu, 13 Temmuz 2012 c7c372'deki platform güncellemesinin bir parçası olarak J3 gelişimi sırasında düzeltildi.

Plaform değişikliği, ilk olarak CMS izleyici eşyası 28633'ü yükselttikten sonra 3 Temmuz 2012 99b6ac PR1341'de yapıldı.

33717 hatasını yükseltmek ve J2.5'e karşı bir yama sağlamak için @valentin'e teşekkür ederiz.

7
Peter Wiseman

Evet, büyük olasılıkla 2.5 sürümünde bir hata. JUserHelper getProfile () - işlevi joomla 2.5 dağıtımında herhangi bir yerde kullanılmaz, bu yüzden hata katılımsız gidebilir, sanırım. Şimdi açıklandığı gibi kullanmak için, gerçekten hiçbir anlam ifade etmez JUserHelper - sınıfını alt sınıf gerekir.

4
jonasfh

Statik eksik bir hatadır http://prntscr.com/3hl3t1

statik yerinde baskı ile

$userProfile = JUserHelper::getProfile(42);
print_r( $userProfile );

i̇adeler

http://prntscr.com/3hl3x7

şimdilik fonksiyonu kopyalayıp bu şekilde kullanabilirsiniz

function MygetProfile($userId = 0)
{
    if ($userId == 0)
    {
        $user   = JFactory::getUser();
        $userId = $user->id;
    }

    // Get the dispatcher and load the user's plugins.
    $dispatcher = JDispatcher::getInstance();
    JPluginHelper::importPlugin('user');

    $data = new JObject;
    $data->id = $userId;

    // Trigger the data preparation event.
    $dispatcher->trigger('onContentPrepareData', array('com_users.profile', &$data));

    return $data;
}
$userProfile = MygetProfile(42);
print_r( $userProfile );
3
Dan