21-03-2012, 01:00
(Ten post był ostatnio modyfikowany: 21-03-2012, 01:04 przez R_Rafalsky.)
Miałem ostatnio spory problem z jednym zadaniem. Mianowicie w projekcie na localhoście z dnia na dzień pojawił się problem, który nie istniał w sieci. Pewnego dnia wywaliło mi w jednej linijce błąd " Trying to get property of non-object". Problem znany przyczyna znajoma. Zdziwiło mnie, że w sieci problem nie istnieje. Strona śmiga aż miło. Ściągnąłem wersję z sieci i nadal localhost udaje, że nie widzi obiektu. Wszelkie var_dumpy podawały poprawne wyniki, a nadal problem występował. Usunąłem lokalnie cały folder protected i ściągnąłem wersję z sieci. Nic nie dało. W sieci działa u mnie ni. W końcu postanowiłem pobawić się w kodzie i coś takiego mi zadziałało:
Czy ktoś jest mi w stanie odpowiedzieć na pytanie: Dlaczego to działa?
Problem leży w 5 linijcie. Dlaczego dla if $user1 jest tablicą by dalej był normalnie widoczny jako obiekt?
Błąd odwołania do nie-obiektu wyskakiwał gdy warunek if miał taki zapis:
Kod PHP:
<?php
$obserwuje=Follow::model()->findAll('user_id=:id',array(':id'=>$user->login ));
$i=0;
foreach($obserwuje as $row):
$user1=User::model()->find('login=:l',array(':l'=>$row['follower_ID']));
if($user1['avatar']): ?>
<a href="/<?php echo $user1->login; ?>"><img src="/uploads/avatar/<?php echo $user1->avatar; ?>" alt="<?php echo $user1->login; ?>" title="Zobacz profil użytkownika <?php echo $user1->login; ?>" /></a>
<?php endif; ?>
<?php endforeach; ?>
Czy ktoś jest mi w stanie odpowiedzieć na pytanie: Dlaczego to działa?
Problem leży w 5 linijcie. Dlaczego dla if $user1 jest tablicą by dalej był normalnie widoczny jako obiekt?
Błąd odwołania do nie-obiektu wyskakiwał gdy warunek if miał taki zapis:
Kod PHP:
if($user1->avatar):
Jak pomogłem daj '+'. To nie boli, a ja mam satysfakcję 
Any sufficiently advanced technology is indistinguishable from magic.

Any sufficiently advanced technology is indistinguishable from magic.