Problem z zaladowaniem pliku

0

Witam,
Ciężko mi będzie opisać swój problem no ale postaram się to jakoś zrobić.

A mianowicie napisałem sobie klasę ładująca komponenty do widoku kod był bardziej rozbudowany ale starając się usunąć problem zostawiłem to co najważniejsze :

class Loader
{   
    static public function componentLoader($OBJECT)
    {
        $fileObject = '_component/'.$OBJECT.'.component.php';
        
        require_once($fileObject);
    }
}

Używam tego w ten sposób.

echo '<body>';
Loader::componentLoader('toolbar_date');
echo '</body>';
echo '</html>';

plik toolbar_date zawiera tylko to:

echo '
    <section id="toolbar_date">
    	<h2 class="hide">Aktualna Data</h2>
    	<span class="font_myriad">Akutalna data: </span>
        <span class="font_myriad_another">Sobota, 15 września 2012r.</span>
    </section>
';

I niby wszystko się ładuje ale u góry pojawia mi sie odstęp którego nie powinno być a jak wejdę zbadaj element do pokazują mi się ze w <body> mam cudzysłowy i dlatego jest ten odstęp.
Screen:
Image and video hosting by TinyPic

Bardzo proszę o pomoc co robię źle

0

Nie nie robisz źle.
W twoim komponencie rzucasz na wyjście również nowa linię. Dlatego pojawia się węzeł tekstowy z białymi znakami.
Gdybyś zrobił tak:

echo '<section ...

to by tego entera i innych białych znaków nie było.

0
echo '<section id="toolbar_date">
    	<h2 class="hide">Aktualna Data</h2>
    	<span class="font_myriad">Akutalna data: </span>
        <span class="font_myriad_another">Sobota, 15 września 2012r.</span>
</section>';

zrobione tak i nadal coś dorzuca

1

A może przed otwarciem trybu PHP drukujesz jakieś białe znaki w w pliku pomponentu?

<?php

powinny być pierwszymi literami pliku dołączanego.

Być może kwestie kodowania pliku mają znaczenie (UTF z BOM).

0

Tak zgadza się był problem że UTF było z BOM :) a co to takiego ten BOM jest ??

0

a co to takiego ten BOM jest ??

To tak zwany byte order mark (tzn. stąd się bierze skrót).
Na początku istnienia standardu unicode (czyli zestawu znaków, w założeniu identycznych dla całego świata mających naprawić bałagan który wtedy szalał po świecie) zostało zdefiniowane sporo różnych sposobów kodowania znaków.
Jednym z tych kodowań było UTF-16, zakładające że każdy znak (no, w uproszczeniu - pomijając surgoaty) jest kodowany na 16 bitach czyli 2 bajtach.
Niestety, twórcy standardu nie mogli się zdecydować na to czy wszystkie znaki mają być kodowane w formacie little endian czy big endian (*), więc zdefiniowali /dwa/ różne sposoby kodowania - utf-16be i utf-16le.
Twórcy aplikacji dzięki temu mieli dodatkowy problem na głowie (utf-16be interpretowany jako utf-16le jest kompletnie bezsensownym ciągiem znaków i odwrotnie) - więc wymyślili sobie że będą na początek każdego pliku dodawać jeden specjalny znak BOM (U+FEFF) - jeśli plik jest zakodowany jako little endian, pierwsze dwa bajty pliku będą równe (0xFF, 0xFE), a jeśli jako big endian, pierwsze dwa bajty będą równe (0xFE, 0xFF) - w ten sposób można łatwo rozróżnić te dwa sposoby kodowania.
Oczywiście spowodowało to pełno dodatkowych problemów, na przykład aplikacje nie rozpoznające BOM (w tym interpreter PHP jak widać) myślą że na początku pliku znajduje się jakiś dodatkowy, dziwny znak.
Swoją drogą, ponieważ BOM jest zwykłym znakiem, może być dodawany również na początek plików w kodowaniu UTF-8, i UTF-32.

(*) różnica między big endian i little endian, polega że w tym drugim bajty są od najmniej znaczącego do najbardziej znaczącego. Czyli jeśli mamy 16bitowy znak: 0x1234, to w big endian będzie w pliku reprezentowany jako (0x12, 0x34) a w little endian jako (0x34, 0x12).

TLDR - BOM to specjalny znak dodawany opcjonalnie na początek plików tekstowych służący do prostego wykrywania kodowania i endianness (kolejności bajtów) w pliku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1