K čemu je v PHP dobré použít framework?

Re:K čemu je v PHP dobré použít framework?
« Odpověď #30 kdy: 19. 06. 2025, 19:40:23 »

Jediné co mi vadí je poněkud obstaróžní práce s fragmenty:
Kód: [Vybrat]
    <?php $text 'Ahoj světe'$href 'page2.php'; include 'nav-button.php' ?>

Takovou hrůzu by mě nenapadlo napsat. Include, resp. require používám výjimečně - obvykle jen jednou v celé aplikaci.

Jak teda bez frameworku použiješ v HTML kódu fragment?


Re:K čemu je v PHP dobré použít framework?
« Odpověď #31 kdy: 19. 06. 2025, 20:16:42 »
Chatgpt vytrvale rika, ze pro reusable components se to dela v PHP takto:

Kód: [Vybrat]
// components/Button.php
function Button($text, $href) {
    return "<a href=\"" . htmlspecialchars($href) . "\">$text</a>";
}

A potom:

Kód: [Vybrat]
$html = Button('OK', '/submit');
echo $html;

A to je takový piece of crap, že bych raději udělal:

Kód: [Vybrat]
    <?php $text 'Ahoj světe'$href 'page2.php'; include 'nav-button.php' ?>

Ačkoliv lepší je si udělat funkci a zavolat jen:

Kód: [Vybrat]
    <?php render('nav-button'text 'Ahoj světe'href  'page2.php'?>

Fakt, že Chatgpt v jednom kuse říká takové věci k otázkám k PHP, a výše uvedené nedá nikdy dohromady, v kombinaci s tím, že se dívám do zdrojáků Dokuwiki a vidím:

Kód: [Vybrat]
    protected function showMenuItem($item)
    {
        global $ID;
        if (blank($item['prompt'])) return;
        echo '<li><div class="li">';
        echo '<a href="' . wl($ID, 'do=admin&amp;page=' . $item['plugin']) . '">';
        echo '<span class="icon">';
        echo inlineSVG($item['icon']);
        echo '</span>';
        echo '<span class="prompt">';
        echo $item['prompt'];
        echo '</span>';
        echo '</a>';
        echo '</div></li>';
    }   

Mi indikuje, že v PHP se psaly zjevně strašné crappy. Je jen pár základních konstrukcí, co má umět template:

1. If else
2. Foreach
3. A jak se pracuje s fragmenty (reusable components)

Jsou to jen tyhle výše uvedené 3 základy, a pro tu poslední nemá PHP řešení. No, dá se udělat ta funkce viz výše, ale zjevně to historicky v praxi nikdo nedělal. A z Chatgpt to taky nejde vymáčknout.
« Poslední změna: 19. 06. 2025, 20:22:18 od registrovany123 »

Kit

  • *****
  • 761
    • Zobrazit profil
    • E-mail
Re:K čemu je v PHP dobré použít framework?
« Odpověď #32 kdy: 19. 06. 2025, 22:49:42 »

Jediné co mi vadí je poněkud obstaróžní práce s fragmenty:
Kód: [Vybrat]
    <?php $text 'Ahoj světe'$href 'page2.php'; include 'nav-button.php' ?>

Takovou hrůzu by mě nenapadlo napsat. Include, resp. require používám výjimečně - obvykle jen jednou v celé aplikaci.

Jak teda bez frameworku použiješ v HTML kódu fragment?

Co máš na mysli tím fragmentem? Vše potřebné pro HTML mám v šabloně, do které sypu data. Podle struktury dat se dynamicky vytváří i fragmenty HTML.

Kit

  • *****
  • 761
    • Zobrazit profil
    • E-mail
Re:K čemu je v PHP dobré použít framework?
« Odpověď #33 kdy: 19. 06. 2025, 23:10:36 »
Chatgpt vytrvale rika, ze pro reusable components se to dela v PHP takto:

Kód: [Vybrat]
:

ChatGPT generuje hezky, ale občas je nutné mu jeho výplody omlátit o čipy.

Fakt, že Chatgpt v jednom kuse říká takové věci k otázkám k PHP, a výše uvedené nedá nikdy dohromady, v kombinaci s tím, že se dívám do zdrojáků Dokuwiki a vidím:
Kód: [Vybrat]
:
       global $ID;
:
Mi indikuje, že v PHP se psaly zjevně strašné crappy. Je jen pár základních konstrukcí, co má umět template:

Když vidím global nebo statické třídy, tak začnu vidět rudě.

To je vydolováno ze starých a neudržovaných aplikací. Projdi si raději GitHub.

1. If else
2. Foreach
3. A jak se pracuje s fragmenty (reusable components)

Jsou to jen tyhle výše uvedené 3 základy, a pro tu poslední nemá PHP řešení. No, dá se udělat ta funkce viz výše, ale zjevně to historicky v praxi nikdo nedělal. A z Chatgpt to taky nejde vymáčknout.

V šablonách obvykle používám jen if a i tomu se snažím vyhnout podmíněnými šablonami, které se aktivují jen když poskytnu příslušná data. Snad přijdu na to, co máš na mysli těmi fragmenty.

Re:K čemu je v PHP dobré použít framework?
« Odpověď #34 kdy: 20. 06. 2025, 11:59:25 »
Je jen pár základních konstrukcí, co má umět template:

1. If else
2. Foreach
3. A jak se pracuje s fragmenty (reusable components)

Jsou to jen tyhle výše uvedené 3 základy, a pro tu poslední nemá PHP řešení.

Ještě se taky hodí, když má escaping by default. Což PHP taky nemá.


BoneFlute

  • *****
  • 2 033
    • Zobrazit profil
Re:K čemu je v PHP dobré použít framework?
« Odpověď #35 kdy: 20. 06. 2025, 13:30:03 »
Je jen pár základních konstrukcí, co má umět template:

1. If else
2. Foreach
3. A jak se pracuje s fragmenty (reusable components)

Jsou to jen tyhle výše uvedené 3 základy, a pro tu poslední nemá PHP řešení.

Ještě se taky hodí, když má escaping by default. Což PHP taky nemá.

Což třeba Latte, jako jeden z mála, má.

Re:K čemu je v PHP dobré použít framework?
« Odpověď #36 kdy: 20. 06. 2025, 15:15:03 »
Chatgpt vytrvale rika, ze pro reusable components se to dela v PHP takto:

Kód: [Vybrat]
// components/Button.php
function Button($text, $href) {
    return "<a href=\"" . htmlspecialchars($href) . "\">$text</a>";
}

to bys neměl takhle dělat, framework má smysl, protože php je plné pastí. Když bude v href třeba tohle

Kód: [Vybrat]
javascript:alert(document.cookie)

tak ti to bez problémů projde a asi nemusím zmiňovat, že alert je jen ukázka, on tam může být skoro jakýkoliv JS kód a ten nepotřebuje uvozovky.

Spousty zábavy si pak zažiješ, když htmlspecialchars použiješ v jiném kontextu nebo na vstupu neošetříš multibyte znaky.

BoneFlute

  • *****
  • 2 033
    • Zobrazit profil
Re:K čemu je v PHP dobré použít framework?
« Odpověď #37 kdy: 20. 06. 2025, 16:35:54 »
Chatgpt vytrvale rika, ze pro reusable components se to dela v PHP takto:

Kód: [Vybrat]
// components/Button.php
function Button($text, $href) {
    return "<a href=\"" . htmlspecialchars($href) . "\">$text</a>";
}

to bys neměl takhle dělat, framework má smysl, protože php je plné pastí. Když bude v href třeba tohle

Kód: [Vybrat]
javascript:alert(document.cookie)

tak ti to bez problémů projde a asi nemusím zmiňovat, že alert je jen ukázka, on tam může být skoro jakýkoliv JS kód a ten nepotřebuje uvozovky.

Spousty zábavy si pak zažiješ, když htmlspecialchars použiješ v jiném kontextu nebo na vstupu neošetříš multibyte znaky.

Poznámka: toto není o PHP, a o tom, že by PHP bylo plné pastí. Ostatně ať si tazatel zkusí to samé v javascriptu, nebo pythonu - vznikne mu tam úplně stejná chyba a úplně stejně se to řeší.

Když budu generovat html musím řešit bezpečnost (XSS, HTML Injection, Template Inejection, JS Injection, Clickjacking, etc)
Když budu generovat pdf, musím řešit bezpečnost (* Injection, LFI)
Když budu generovat obrázky, musím řešit bezpečnost (RCE, LFI, EXIF attack)

Kit

  • *****
  • 761
    • Zobrazit profil
    • E-mail
Re:K čemu je v PHP dobré použít framework?
« Odpověď #38 kdy: 20. 06. 2025, 21:24:04 »
Chatgpt vytrvale rika, ze pro reusable components se to dela v PHP takto:

Kód: [Vybrat]
// components/Button.php
function Button($text, $href) {
    return "<a href=\"" . htmlspecialchars($href) . "\">$text</a>";
}

to bys neměl takhle dělat, framework má smysl, protože php je plné pastí. Když bude v href třeba tohle

Kód: [Vybrat]
javascript:alert(document.cookie)

tak ti to bez problémů projde a asi nemusím zmiňovat, že alert je jen ukázka, on tam může být skoro jakýkoliv JS kód a ten nepotřebuje uvozovky.

Spousty zábavy si pak zažiješ, když htmlspecialchars použiješ v jiném kontextu nebo na vstupu neošetříš multibyte znaky.

Kromě htmlspecialchars() existují v PHP i jiné způsoby, jak ošetřit vstup i výstup. Frameworky k tomu opravdu nejsou potřebné a bohužel často dávají tvůrci falešnou představu, že bude vše zabezpečeno.