Ασφαλή και διαισθητικά
templates για την PHP

Πάνω από 27% των ιστοσελίδων έχουν
κρίσιμες ευπάθειες

Η πιο συνηθισμένη κρίσιμη ευπάθεια των ιστοσελίδων είναι το Cross-Site Scripting (XSS). Επιτρέπει σε έναν εισβολέα να εισάγει ένα κακόβουλο σενάριο σε μια ξένη σελίδα, το οποίο εκτελείται στον περιηγητή ενός ανυποψίαστου χρήστη. Μπορεί να τροποποιήσει τη σελίδα, να αποκτήσει ευαίσθητες πληροφορίες ή ακόμη και να κλέψει την ταυτότητα του χρήστη.

Τα συστήματα προτύπων αποτυγχάνουν στην άμυνα κατά του XSS. Το Latte είναι το μόνο σύστημα με αποτελεσματική άμυνα χάρη στο λεγόμενο context-sensitive escaping.

Όποιος θέλει έναν καλά ασφαλισμένο ιστότοπο, χρησιμοποιεί το Latte.

Κουίζ: Μπορείτε να αμυνθείτε από την ευπάθεια XSS;

Πηγή δεδομένων: Acunetix Web Vulnerability Report

Παράδειγμα αυτόματου escaping της μεταβλητής $text σε διάφορα πλαίσια (μπορείτε να επεξεργαστείτε το παραπάνω πρότυπο):

{var $text = "O'Neill"}
- σε κείμενο: <span>{$text}</span>
- σε χαρακτηριστικό: <span title={$text}></span>
- σε χαρακτηριστικό χωρίς εισαγωγικά: <span title={$text}></span>
- σε JavaScript: <script>var = {$text}</script>
- σε κείμενο: <span>O'Neill</span>
- σε χαρακτηριστικό: <span title='O&apos;Neill'></span>
- σε χαρακτηριστικό χωρίς εισαγωγικά: <span title="O&apos;Neill"></span>
- σε JavaScript: <script>var = "O'Neill"</script>

Μια γλώσσα που γνωρίζετε καλά

Δεν υπερβάλλουμε. Γνωρίζετε ήδη πραγματικά τη γλώσσα Latte. Ξέρετε ήδη πώς να γράφετε εκφράσεις σε αυτήν. Γράφονται ακριβώς όπως στην PHP. Έτσι, δεν χρειάζεται να σκέφτεστε πώς να γράψετε κάτι στο Latte. Δεν χρειάζεται να ψάχνετε στην τεκμηρίωση. Δεν χρειάζεται να μάθετε άλλη γλώσσα. Απλώς γράφετε όπως στην PHP. Περισσότερα για τη σύνταξη του Latte

Βρόχος

<ul>
    {foreach $users as $user}
        <li>{$user->name}</li>
    {/foreach}
</ul>

Συνθήκη

{if $post->status === Status::Published}
    Read post
{elseif count($posts) > 0}
    See other posts
{/if}

Εκφράσεις

{$product?->getDiscount()}

{$foo[0] + strlen($bar[Bar::Const])}

{array_filter($nums, fn($n) => $n < 100)}

Latte vs Twig

Το Latte βασίζεται στην PHP, ενώ το Twig βασίζεται στην Python. Ένας σχεδιαστής στο Latte δεν χρειάζεται να αλλάζει συνεχώς μεταξύ δύο διαφορετικών συμβάσεων. Για παράδειγμα, μεταξύ του for person in people στα πρότυπα και του foreach $people as $person στην PHP. Δεν χρειάζεται καν να σκέφτεται πού να χρησιμοποιήσει το {% %} και πού το {{ }}, επειδή το Latte έχει έναν οριοθέτη {...}.

Δοκιμάστε το εργαλείο μετατροπής προτύπων Twig σε Latte.

<ul>
    {foreach $foo->items as $item}
        <li>{$item->name}</li>
    {/foreach}
</ul>
<ul>
    {% for item in foo.items %}
        <li>{{ item.name }}</li>
    {% endfor %}
</ul>

Λειτουργία εξοικονόμησης που θα σας ενθουσιάσει

Οι χρήστες λατρεύουν αυτό το χαρακτηριστικό. Το ονομάζουμε n:attributes. Κάθε ζευγαρωτό tag, όπως το {if} … {/if}, που περιβάλλει ένα στοιχείο HTML, μπορεί να γραφτεί ως το χαρακτηριστικό του n:if. Αυτό επιτυγχάνει μια πολύ οικονομική σύνταξη. Τα χαρακτηριστικά μπορούν επίσης να έχουν προθέματα inner- και tag-, τότε η συμπεριφορά ισχύει για το εσωτερικό του στοιχείου ή για τα αρχικά και τελικά tags HTML αντίστοιχα. Περισσότερα για τα n-attributes

Χρησιμοποιώντας n:attributes:

<ul n:if="count($menu) > 1" class="menu">
    <li n:foreach="$menu as $item">
        <a n:tag-if="$item->href" href={$item->href}>
            {$item->caption}
        </a>
    </li>
</ul>

Το ίδιο χωρίς αυτά:

{if count($menu) > 1}
    <ul class="menu">
        {foreach $menu as $item}
            <li>
                {if $item->href}<a href={$item->href}>{/if}
                    {$item->caption}
                {if $item->href}</a>{/if}
            </li>
        {/foreach}
    </ul>
{/if}

Το Latte περιποιείται τους προγραμματιστές

Επεξεργασία

Το Latte έχει εγγενή υποστήριξη στο NetBeans και ένα εξαιρετικό plugin για το PhpStorm, το οποίο προτείνει tags, φίλτρα και κώδικα PHP.

Debugging

Μείνετε πάντα ενήμεροι. Το Plugin για το Tracy ενημερώνει σε κάθε σελίδα ποια πρότυπα και ποιες μεταβλητές αποδίδονται.

Σύστημα προτύπων νέας γενιάς

Το Latte είναι ένα σύστημα προτύπων νέας γενιάς – κατανοεί τη γλώσσα HTML. Εκεί όπου άλλα συστήματα βλέπουν απλώς ένα σωρό χαρακτήρες, το Latte βλέπει στοιχεία HTML. Γι' αυτό έχει δύο εκπληκτικές λειτουργίες, όπως το context-aware escaping και τα n:attributes.

Πώς βλέπουν το πρότυπο τα Blade, Twig και άλλα συστήματα

░░░░░░░░░░░░░░░
░░░░░░
    ░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
    ░░░░░░░
    ░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░
            @foreach ($navigation as $item)
                ░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
            @endforeach
        ░░░░░

        ░░░░░░░░
            ░░░░░░░░░░░░{{ $appName }}░
        ░░░░░░░░░
    ░░░░░░░
░░░░░░░

Πώς βλέπει το πρότυπο το Latte

<!DOCTYPE html>
<html>
    <head>
        <title>It's all about context</title>
        <meta name="description" content={include description}>
    </head>
    <body>
        <ul class="navigation">
            {foreach  $navigation as $item}
                <li><a href={$item->link}>{$item->title}</a></li>
            {/foreach}
        </ul>

        <script>
            var appName = {$appName};
        </script>
    </body>
</html>

Layouts και Κληρονομικότητα

Οι εξελιγμένοι μηχανισμοί επαναχρησιμοποίησης και κληρονομικότητας των προτύπων αυξάνουν την παραγωγικότητά σας, καθώς κάθε πρότυπο περιέχει μόνο το μοναδικό του περιεχόμενο και τα επαναλαμβανόμενα στοιχεία και δομές επαναχρησιμοποιούνται.

Sandbox

Το Latte διαθέτει ένα θωρακισμένο καταφύγιο ακριβώς κάτω από το καπό. Ονομάζεται λειτουργία sandbox και απομονώνει πρότυπα από μη αξιόπιστες πηγές, όπως αυτά που επεξεργάζονται οι ίδιοι οι χρήστες. Τους παρέχει περιορισμένη πρόσβαση σε tags, φίλτρα, συναρτήσεις, μεθόδους, κ.λπ. Πώς λειτουργεί;

Γρήγορο σαν τον άνεμο

Το Latte μεταγλωττίζει τα πρότυπα σε βέλτιστο κώδικα PHP κατά το χρόνο εκτέλεσης. Έτσι, είναι εξίσου γρήγορο σαν να γράφατε καθαρή PHP. Ο μεταγλωττισμένος κώδικας είναι σαφής και μπορείτε εύκολα να τον αποσφαλματώσετε. Κάθε φορά που αλλάζει το πρότυπο, φυσικά, μεταγλωττίζεται ξανά.

Πάνω από 18 χρόνια

Αναπτύσσουμε το Latte για πάνω από 18 χρόνια – και ο αριθμός συνεχίζει να αυξάνεται! Οι βιβλιοθήκες που παρέχουμε είναι επομένως πολύ ώριμες, σταθερές και ευρέως χρησιμοποιούμενες. Τους εμπιστεύονται πολλές παγκόσμιες εταιρείες και τροφοδοτούν πολλούς σημαντικούς ιστότοπους. Ποιος χρησιμοποιεί και εμπιστεύεται το Latte?

Εξαιρετική τεκμηρίωση

Οι αναγνώστες επαινούν την τεκμηρίωση για τη σαφήνεια και την πληρότητά της. Σας ευχόμαστε καλή ανάγνωση.

Ανοιχτού κώδικα

Το Latte είναι ανοιχτού κώδικα και μπορείτε να το χρησιμοποιήσετε εντελώς δωρεάν.