Nie jestem pewien, czy ta klasa dziala dobrze. Dominium, spojrz tutaj:
http://dev.4programmers.net/adm/Wiki/History/Foo
i porownaj te dwie wersje - wyswietla sie wynik jej dzialania. Jest ok?
Mysle, ze lepiej, aby klasa zwracala po prostu tablice asocjacyjna z informacjami o usunietych, dodanych i zmienionych liniach. Np. zeby byly metody:
getAdded(), getRemoved(), getChanged()
Co Wy na to?
Aby kluczem tablicy byla linia, a wartoscia zawartosc danej linii. W ten sposob, w widoku mozna by bylo ustalic jak maja sie prezentowac wyniki. Do rozpatrzenia.
Ewentualnie (to by bylo fajnie), gdyby metoda getChanged() zwracala linie w ktorych nastapila zmiana np. w tej formie:
<numer linii="linii"> => To jest tekst <ins>ktory</ins> ktorym ...
Znacznik <ins> oznacza wartosc wstawiona w tej linijce, a - usunieta. Wowzcas mozna by bylo w CSS ustalic jak ma sie wyswietlac ten znacznik.
P.S. Jestes pewien, ze array_merge_recursive() nie moze zastapic metody o tej nazwie z klasy diff ?