Posts Tagged ‘bugs’

Dziwne przypadki programisty – private WTF ?

Posted in php, programowanie on luty 24th, 2011 by Wojciech Soczyński – 10 Comments

Wykonując dzisiaj taski w pracy, natrafiłem na ciekawą rzecz, task, z wklejonym komunikatem o treści (imiona klas zostały zmienione ze względu na prośbę zainteresowanych):

Fatal error: Cannot access private property Foo::$foo in /home/www/example/Bar.php on line 75

Pierwsze co zrobiłem, to oczywiście zajrzałem do pliku Bar.php i linie 75, zastałem coś w rodzaju:

public function init(){
    $this->foo = 'foofoo';
}

Oczywiście pierwsze co mi przyszło do głowy to „pewnie w klasie w hierarchii wyżej jest ta zmienna zadeklarowana jako private”. Zacząłem przebijać się przez hierarchię klas i ku mojemu zdziwieniu deklaracji „private $foo;” nie znalazłem. Kilka razy rzuciłem kolegę dyżurnym pluszowym krabem i wpadł mi do głowy pomysł – zajrzę do kodu klasy Foo.

Zajrzałem i spostrzegłem, że wywołuje ona parent::init() z klasy Bar. Następnie zauważyłem, że ma zdeklarowane w swoim ciele szukane „private $foo”. Szybko zmieniłem private na protected i zadziałało.

Jakie z tego płyną wnioski ? Po pierwsze, warto czasami rzucić kogoś krabem. Po drugie, kwalifikatory widoczności działają w obie strony hierarchii klas. Po trzecie – jak mówi stare chińskie przysłowie – rzeka płynie tylko w jedną stronę, a jak płynie w dwie to odstaw LSD ;).

Źródła błędów w projektach programistycznych

Posted in ogólne on maj 2nd, 2010 by Wojciech Soczyński – Be the first to comment

Niniejszy artykuł powstał w wyniku obserwacji, które dokonuje od dłuższego czasu, uczestnicząc przy różnego rodzaju software-owych projektach informatycznych. Napisany jest z punktu widzenia programisty, czyli osoby, która ma największą styczność z nimi.

Błędy w oprogramowaniu są rzeczą niemożliwą do uniknięcia, jednakże znając ich przyczyny i poniekąd skutki można im w pewnym stopniu zaradzić. Postaram się przybliżyć każdy z rodzajów błędów oraz podać możliwe przyczyny i jeżeli to możliwe – rozwiązania.

read more »