Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Tworzenie dodatkowych klas dla aplikacji


teez

Rekomendowane odpowiedzi

Hej,

 

Ostatnio przeglądałem kilka aplikacji "od środka" i zauważyłem, że większość tworzy własną klasę, którą później używa w module. Próbuję uczyć się podobnie, nie wiem czy łapie do końca poprawnie - możecie mi podwiedzieć, czy robię dobrze? Wszystko działa, ale chcę mieć pewność, czy nie wyrabiam sobie czasem jakichś złych nawyków.

 

klasa -> http://wklej.org/id/1014419/

przykładowy moduł -> http://wklej.org/id/1014420/

Edytowane przez TeeZ

Znajdziesz mnie na LinkedIn

Odnośnik do komentarza
Udostępnij na innych stronach

Zła nawyki?
1. Mieszanie HTML z PHP jest ble.
2.

        $odpowiedz = '<script language="javascript"> location.href="index.php?app=gamehub"</script>';
                echo $odpowiedz;

można zmienić na:

echo '<script language="javascript"> location.href="index.php?app=gamehub"</script>';

Chociaż powinno być:

return '<script language="javascript"> location.href="index.php?app=gamehub"</script>';

3. Po co dodajesz NIC na końcach?
Przykładowo:

$this->DB->update( 'news', array( 'tytul' => $tytul ), 'id='.$this->request['id'].'' );

Na:

$this->DB->update( 'news', array( 'tytul' => $tytul ), 'id='.$this->request['id'] );

4. Pamiętaj że:

$this->request['id']

Trzyma dane wysłane przez klienta (użytkownika) a więc w myśl zasady "każde dane które może wypełnić użytkownik zewnętrzny powinny być odpowiednio filtrowane". Zrzędzenie, ale potem parę osób przychodzi z płaczem że jakiś hakier zepsuł im forum.
 
5. Tworzysz funkcję z dwoma argumentami, oba są wymagane (przez brak danych początkowych), mimo to sprawdzasz:

if(empty($wysylanyTekst))

Całość może wyglądać tak:

    public function checkNews($wysylanyTekst = 'Pusta wiadomosc', $wysylanyTytul = 'Brak tytulu')
    {
        $this->sendNews($wysylanyTekst, $wysylanyTytul);
        return '<script language="javascript"> location.href="index.php?app=gamehub"</script>';
    }

i... tyle.
 
Jeżeli chodzi o "moduł", czy mi się wydaje że tworzysz pętle dla jednego wyniku z sql?

$wiadomos['id']    = $row['id'];

Nazwy zmiennych, funkcji, klas... wszystkiego, powinny być w języku angielskim.

$_POST

Przejmuje:

$this->request

Zamiast:

if($this->request['section'] == NULL)

I wstawianie między tego ifa całej zawartości możesz zrobić:

if($this->request['section'] != null)

I przerwać działanie poprzez:

return false;
if($this->request['section'] != null)
{
    return false;
}

// Dalsza część kodu
  • Lubię to 2
Odnośnik do komentarza
Udostępnij na innych stronach

 

3. Po co dodajesz NIC na końcach?

 

Rozumiem to w taki sposób: where 'id='.$cos.'' tak jak masz zamkniecie cudzysłowia w cytacie. Ale ok, zmieniłem i zapamiętam.

 

 

 

Jeżeli chodzi o "moduł", czy mi się wydaje że tworzysz pętle dla jednego wyniku z sql?

Wydaje Ci się. W bazie mam kilka rekordów. :)

 

Co do $this->request, co gdy jest $_POST['id'] i $_GET['id'] ? Request w końcu przejmuje i GET'y i POST'y.

I $this->request nie łapie bbcode z edytora

$editor->process( $_POST['news'] );

Daje wynik ( dla przykładu Test ):

[b] Test [/b]

A $editor->process( $this->request['news'] );

<p><strong>Test</strong></p>
Edytowane przez TeeZ

Znajdziesz mnie na LinkedIn

Odnośnik do komentarza
Udostępnij na innych stronach

Najlepiej jakbyś sobie poobserwował działanie $this->request jako że nie jest to tylko zwykła globalna jak $_POST, dodaj do globalTemplate (na localhost):

<php>
error_reporting(0);
var_dump($this->request);
</php>

I przeklikaj parę stron :)

 

A jeżeli chodzi o bbcode: https://www.invisionpower.com/support/guides/_/advanced-and-developers/api-methods/34-editor-and-parsing-methods-r229

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.