Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 40 von 67

Thema: Können wir in Contao 3 … (zuerst lesen, dann aufregen)?

  1. #1
    Contao-Hauptentwickler
    AG Core-Entwicklung
    Avatar von leo
    Registriert seit
    05.06.2009.
    Ort
    Wuppertal
    Beiträge
    816

    Standard Können wir in Contao 3 … (zuerst lesen, dann aufregen)?

    In PHP 5.4 ist jetzt endlich "<?=" immer verfügbar, egal ob "short_open_tag" an oder aus ist. Es würde die Templates deutlich übersichtlicher machen, wenn wir das verwenden könnten. Einziger Nachteil: in PHP 5.3 muss dafür "short_open_tag" gesetzt sein.

    Die Einstellung "short_open_tag" steht in PHP 5.3 auf "PHP_INI_PERDIR", kann also von überall aus gesetzt werden, außer aus dem Skript selbst mittels "ini_set()". Nun die Frage: Können wir verlangen, dass die Leute unter PHP 5.3 "short_open_tag" aktivieren?

    (Eine Template-Engine wie Twig oder Smarty würde die Templates auch übersichtlicher machen, steht aber für Contao 3 nicht zur Diskussion. Die Twig-Syntax beißt sich außerdem mit der Inserttag-Syntax und Twig verarbeitet auch keinen PHP-Code, was wir für die Rückwärtskompatibilität bräuchten.)

  2. #2
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Wo ist der Vorteil, ausser das Du pro PHP Datei mind. 2 Byte sparst ?
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  3. #3
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Ich glaub es geht garnicht ums einsparen, sondern wie Leo schon sagte um die Übersichtlichkeit.

    Für meinen Teil würde ich mich dafür aussprechen es mit "<?=" zu machen. Da die Einstellung short_open_tag von jedem -leicht- gesetzt werden kann.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  4. #4
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    ist fuer mich persoenlich irgendwie kein Argument.

    Ich sehe keine sonderlichen Mehrwert, wenn im Code

    PHP-Code:
    <?=
    anstatt

    PHP-Code:
    <?php
    steht.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  5. #5
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    <?= ersetzt nicht <?php sondern <?php echo

    Ansonsten hättest du natürlich recht. Hier mal mehr Infos dazu
    http://de.php.net/manual/de/ini.core...short-open-tag
    Geändert von the_scrat (27.07.2012 um 19:23 Uhr)
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  6. #6
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.945

    Standard

    Zitat Zitat von lindesbs Beitrag anzeigen
    ist fuer mich persoenlich irgendwie kein Argument.

    Ich sehe keine sonderlichen Mehrwert, wenn im Code

    PHP-Code:
    <?=
    anstattt

    PHP-Code:
    <?php
    steht.
    Ich gebe Dir zwar recht, aber es ist wohl eher

    PHP-Code:
    <?=
    anstattt

    PHP-Code:
    <?php echo
    Bezüglich Lesbarkeit würde ich eher "ordentlich eingerückten Quelltext" begrüßen. Hier sind Templates manchmal etwas schwer zu lesen.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  7. #7
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.518
    User beschenken
    Wunschliste

    Standard

    Also mein derzeitiger Provider hat das zwar "On" aber mit der Aussage "das kann ja jeder ändern" wäre ich vorsichtig.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  8. #8
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    […] aber mit der Aussage "das kann ja jeder ändern" wäre ich vorsichtig.
    Jup. Ich habe das Problem zwar nicht, aber solange PHP 5.3 supported ist, würde ich das nicht ändern.
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  9. #9
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von leo Beitrag anzeigen
    Es würde die Templates deutlich übersichtlicher machen, wenn wir das verwenden könnten.
    Das wäre jetzt für mich auch kein Grund wenn es nur das ist. Meine Meinung ist, dass du das entscheiden kannst wie du magst und wenn ich in Zukunft sagen kann "das CMS läuft dort nicht besorg dir einen richtigen Webspace" dann ist das schon Vorteil genug.
    :-)

    Zitat Zitat von leo Beitrag anzeigen
    Die Twig-Syntax beißt sich außerdem mit der Inserttag-Syntax und Twig verarbeitet auch keinen PHP-Code, was wir für die Rückwärtskompatibilität bräuchten)
    Naja, die Syntax von Twig lässt sich frei wählen!

    Das mit dem PHP-Code bleibt... man könnte theoretisch schauen ob eine .html5 .xhtml Datei im Templateverzeichnis liegt und ansonsten die .twig.html5 nehmen :-)
    Aber ich bin gegen so eine Lösung ;-) nicht noch mehr Dateiendungen.

    Wenn ich euch helfen konnte könnt ihr euch gerne mal
    meine Amazon Wunschliste anschauen. Dankeschön.

  10. #10
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von the_scrat Beitrag anzeigen
    Ich glaub es geht garnicht ums einsparen, sondern wie Leo schon sagte um die Übersichtlichkeit.
    Übersichlicher? Dieser "<?=" Tag? Wohl eher Gewohnheitssache.
    Ich verwende ihn aus Prinzip nicht, weil mein Auge+Gehin auf "<?php" gepolt ist. Wenn der Tag "<?php=" heißen würde, wäre das was anderes
    Also ich persönlich halte von den Short Tags recht wenig. Meiner Meinung nach führen Sie sogar zur Unübersichtlichkeit bei! Aber das ist meine persönliche Meinung.

    Zitat Zitat von the_scrat Beitrag anzeigen
    Da die Einstellung short_open_tag von jedem -leicht- gesetzt werden kann.
    Noe, es gibt jede Menge Provider wo du es nicht kannst. Afaik geht es, bzw. ging es früher z.B. bei 1&1 und Strato nicht! Es wäre zu klären, ob das heute immer noch der Fall ist.

  11. #11
    Contao-Urgestein Avatar von KATgirl
    Registriert seit
    31.03.2010.
    Ort
    Marburg
    Beiträge
    1.579
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich kann nur sagen, das wir unser gemanagten Rootserver erst nach Diskussion von php5.2 auf php5.3 umgestellt bekommen haben bei hosteurope. Daher vertrete ich eher die Ansicht. Wir sollten ein Skrip bauen, das bei der Installation prüft welche php-version eingesetzt wird und dann anbietet die Templates zu optimieren. Das konnte dann ka Analog zu dem Kompriemierungsskript ablaufen. Bei Updates würde dann nicht nur die Datenbank geprüft, sondern auch die Templates, das ganze kann man über eine Variable in der Konfig steuern. Dann kann das jeder für sich entscheiden.
    - GitHub
    - Kontaktanfragen

    "Ein Lächeln ist die kürzeste Entfernung zwischen zwei Menschen." Victor Borge

  12. #12
    Contao-Nutzer
    Registriert seit
    30.12.2010.
    Beiträge
    210

    Standard

    Also ich persönlich finde es nach einigen Vergleichen mit der aktuellen Syntax schon übersichtlicher. Jetzt wäre natürlich zu prüfen, ob es bei den diversen Hostern Probleme geben könnte.
    Zitat Zitat von fiedsch Beitrag anzeigen
    Bezüglich Lesbarkeit würde ich eher "ordentlich eingerückten Quelltext" begrüßen.
    Da hätte ich auch nichts gegen.
    Gruß CeeKay

  13. #13
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Wäre halt eine Übergangslösung bis vielleicht in Contao Reloaded eine Template-Engine zum Einsatz kommt.
    Von mir aus könnte man auch schon jetzt mit der Kompatibilität brechen, irgendwann muss man das sowieso.
    (Ich finde besser früher als später.) Aber das ist ja schon entschieden.

    Wenn ich euch helfen konnte könnt ihr euch gerne mal
    meine Amazon Wunschliste anschauen. Dankeschön.

  14. #14
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.618
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Gibt's eine PSR-Meinung dazu? Ich persönlich bin eher dagegen.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  15. #15
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.518
    User beschenken
    Wunschliste

    Standard

    PSR-1:
    • Files MUST use only <?php and <?= tags.
    • PHP code MUST use the long <?php ?> tags or the short-echo <?= ?> tags; it MUST NOT use the other tag variations.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  16. #16
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Bin auch eher dagegen, keine ahnung wieso. aber wenn contao umsteigt dann bitte auch alle extensions. ein mischbetrieb ist nervig und löst verwirrung aus.

  17. #17
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.518
    User beschenken
    Wunschliste

    Standard

    Kann ich gleich sagen, meine Erweiterungen werden NIE umsteigen auf short-tags.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  18. #18
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    Kann ich gleich sagen, meine Erweiterungen werden NIE umsteigen auf short-tags.
    dito

  19. #19
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von andreasisaak Beitrag anzeigen
    dito
    Nun, hier geht es eher um den Coding Stil von Contao, was ihr in euren Erweiterungen macht ist ja eure Sache. Ich Code auch nicht PHP Code-Style konform

  20. #20
    Contao-Hauptentwickler
    AG Core-Entwicklung
    Avatar von leo
    Registriert seit
    05.06.2009.
    Ort
    Wuppertal
    Beiträge
    816

    Standard

    Zudem die Einsparung noch weiter geht, als bisher genannt:

    PHP-Code:
    <?= $name ?>
    ersetzt

    PHP-Code:
    <?php echo $name?>
    Das sind satte 8 Zeichen Einsparung pro Tag! Natürlich ist das Gewöhnungssache, aber ich habe jetzt bei einem Projekt damit gearbeitet und nach 2 Stunden fragt man sich, wieso man das nicht schon immer so gemacht hat. Denn die Templates sind auf einmal so übersichtlich.

    Nebenbei bemerkt: Es hat schon einen Grund, warum "<?=" in PHP 5.4 zum immer verfügbaren, nicht mehr abschaltbaren Standard geworden ist

  21. #21
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Wie ich bereits sagte, das ist reine Gewohnheitssache und ich verwende den Tag vorwiegend aus Gewohnheit nicht.
    Aber wo wir gerade beim Thema "Übersichtlichkeit" sind, schaut euch mal den Vergleich an:

    Original:
    PHP-Code:
    <?php $lang $GLOBALS['TL_LANG']['tl_foo_bar']; ?>
    <h1 id="tl_welcome"><?php echo $lang['headline']; ?></h1>

    <div id="tl_soverview">

        <div id="tl_license">
            <h2><?php echo $lang['license']; ?></h2>

            <p><?php
                printf
    ($lang['licensed'], 'Martin Mustermann''01.12.2012');
                
    ?></p>
        </div>

        <div id="tl_statistic">
            <h2><?php echo $lang['statistic']; ?></h2>

            <table>
                <tr>
                    <td colspan="3" class="total"><?php echo $this->totalCategoryCount?></td>
                    <td><?php echo $lang['totalCategoryCount']; ?></td>
                </tr>
                <tr>
                    <td class="published" title="<?php echo specialchars($lang['published']); ?>">
                        <?php echo $this->totalPublishedVehicleCount?>
                    </td>
                    <td>/</td>
                    <td class="total" title="<?php echo specialchars($lang['total']); ?>">
                        <?php echo $this->totalVehicleCount?>
                    </td>
                    <td><?php echo $lang['totalVehicleCount']; ?></td>
                </tr>
                <?php foreach ($this->categoryVehicleCount as $count): ?>
                <tr<?php if (!$count['published']): ?> class="unpublished"<?php endif; ?>>
                    <td class="published" title="<?php echo specialchars($lang['published']); ?>">
                        <?php echo $count['publishedVehicles']; ?>
                    </td>
                    <td>/</td>
                    <td class="total" title="<?php echo specialchars($lang['total']); ?>">
                        <?php echo $count['vehicles']; ?>
                    </td>
                    <td><a href="contao/main.php?do=fahrzeugmanager_vehicle&amp;table=tl_fahrzeugmanager_vehicle&amp;id=<?php echo $count['id']; ?>"><?php printf($lang['categoryVehicleCount'], $count['category']); ?></a></td>
                </tr>
                <?php endforeach; ?>
            </table>
        </div>

        <div id="tl_moverview">
            <?php
            
    foreach ($GLOBALS['foo_bar'] as $group => $modules)
            {
                
    ?>

                <h2><?php echo $lang[$group]; ?></h2>

                <?php
                
    foreach ($modules as $module)
                {
                    if (
    $module[0] == '!') {
                        
    $module substr($module1);

                        
    ?>
                        <div class="tl_module_desc">
                            <h3><a style="color:#cfcfcf;" class="navigation <?php echo $module?>"><?php echo $lang[$module][0]; ?></a></h3>

                            <p><?php echo $lang[$module][1]; ?></p>
                        </div>
                        <?php
                    
    }
                    else {
                        
    ?>
                        <div class="tl_module_desc">
                            <h3><a href="contao/main.php?do=foo_bar&amp;table=tl_foo_bar_<?php echo $module?>" class="navigation <?php echo $module?>"><?php echo $lang[$module][0]; ?></a></h3>

                            <p><?php echo $lang[$module][1]; ?></p>
                        </div>
                        <?php
                    
    }
                }
            }
            
    ?>
        </div>

    </div>
    Mit <?=
    PHP-Code:
    <?php $lang $GLOBALS['TL_LANG']['tl_foo_bar']; ?>
    <h1 id="tl_welcome"><?= $lang['headline']; ?></h1>

    <div id="tl_soverview">

        <div id="tl_license">
            <h2><?= $lang['license']; ?></h2>

            <p><?php
                printf
    ($lang['licensed'], 'Martin Mustermann''01.12.2012');
                
    ?></p>
        </div>

        <div id="tl_statistic">
            <h2><?= $lang['statistic']; ?></h2>

            <table>
                <tr>
                    <td colspan="3" class="total"><?= $this->totalCategoryCount?></td>
                    <td><?= $lang['totalCategoryCount']; ?></td>
                </tr>
                <tr>
                    <td class="published" title="<?= specialchars($lang['published']); ?>">
                        <?= $this->totalPublishedVehicleCount?>
                    </td>
                    <td>/</td>
                    <td class="total" title="<?= specialchars($lang['total']); ?>">
                        <?= $this->totalVehicleCount?>
                    </td>
                    <td><?= $lang['totalVehicleCount']; ?></td>
                </tr>
                <?php foreach ($this->categoryVehicleCount as $count): ?>
                <tr<?php if (!$count['published']): ?> class="unpublished"<?php endif; ?>>
                    <td class="published" title="<?= specialchars($lang['published']); ?>">
                        <?= $count['publishedVehicles']; ?>
                    </td>
                    <td>/</td>
                    <td class="total" title="<?= specialchars($lang['total']); ?>">
                        <?= $count['vehicles']; ?>
                    </td>
                    <td><a href="contao/main.php?do=fahrzeugmanager_vehicle&amp;table=tl_fahrzeugmanager_vehicle&amp;id=<?= $count['id']; ?>"><?php printf($lang['categoryVehicleCount'], $count['category']); ?></a></td>
                </tr>
                <?php endforeach; ?>
            </table>
        </div>

        <div id="tl_moverview">
            <?php
            
    foreach ($GLOBALS['foo_bar'] as $group => $modules)
            {
                
    ?>

                <h2><?= $lang[$group]; ?></h2>

                <?php
                
    foreach ($modules as $module)
                {
                    if (
    $module[0] == '!') {
                        
    $module substr($module1);

                        
    ?>
                        <div class="tl_module_desc">
                            <h3><a style="color:#cfcfcf;" class="navigation <?= $module?>"><?= $lang[$module][0]; ?></a></h3>

                            <p><?= $lang[$module][1]; ?></p>
                        </div>
                        <?php
                    
    }
                    else {
                        
    ?>
                        <div class="tl_module_desc">
                            <h3><a href="contao/main.php?do=foo_bar&amp;table=tl_foo_bar_<?= $module?>" class="navigation <?= $module?>"><?= $lang[$module][0]; ?></a></h3>

                            <p><?= $lang[$module][1]; ?></p>
                        </div>
                        <?php
                    
    }
                }
            }
            
    ?>
        </div>

    </div>
    Twig:
    PHP-Code:
    {% set lang _lang.tl_foo_bar %}
    <
    h1 id="tl_welcome">{{ lang.headline }}</h1>

    <
    div id="tl_soverview">

        <
    div id="tl_license">
            <
    h2>{{ lang.license }}</h2>

            <
    p>{{ lang.licensed|format('Martin Mustermann''01.12.2012')|raw }}</p>
        </
    div>

        <
    div id="tl_statistic">
            <
    h2>{{ lang.statistic }}</h2>

            <
    table>
                <
    tr>
                    <
    td colspan="3" class="total">{{ totalCategoryCount }}</td>
                    <
    td>{{ lang.totalCategoryCount }}</td>
                </
    tr>
                <
    tr>
                    <
    td class="published" title="{{ lang.published }}">
                        {{ 
    totalPublishedVehicleCount }}
                    </
    td>
                    <
    td>/</td>
                    <
    td class="total" title="{{ lang.total }}">
                        {{ 
    totalVehicleCount }}
                    </
    td>
                    <
    td>{{ lang.totalVehicleCount }}</td>
                </
    tr>
                {% for 
    count in categoryVehicleCount %}
                <
    tr{% if not count.published %} class="unpublished"{% endif %}>
                    <
    td class="published" title="{{ lang.published }}">
                        {{ 
    count.publishedVehicles }}
                    </
    td>
                    <
    td>/</td>
                    <
    td class="total" title="{{ lang.total }}">
                        {{ 
    count.vehicles }}
                    </
    td>
                    <
    td><a href="contao/main.php?do=fahrzeugmanager_vehicle&amp;table=tl_fahrzeugmanager_vehicle&amp;id={{ count.id }}">
                        {{ 
    lang.categoryVehicleCount|format(count.category) }}
                    </
    a></td>
                </
    tr>
                {% endfor %}
            </
    table>
        </
    div>

        <
    div id="tl_moverview">
            {% for 
    groupmodules in settings %}

                <
    h2>{{ lang[group] }}</h2>

                {% for 
    module in modules %}
                    {% if 
    module|slice(0,1) == '!' %}
                        {% 
    set module module|slice(1) %}

                        <
    div class="tl_module_desc">
                            <
    h3><a style="color:#cfcfcf;" class="navigation {{ module }}">{{ lang[module][0] }}</a></h3>

                            <
    p>{{ lang[module][1] }}</p>
                        </
    div>
                    {% else %}
                        <
    div class="tl_module_desc">
                            <
    h3><a href="contao/main.php?do=foo_bar&amp;table=tl_foo_bar_{{ module }}" class="navigation {{ module }}">{{ lang[module][0] }}</a></h3>

                            <
    p>{{ lang[module][1] }}</p>
                        </
    div>
                    {% endif %}
                {% endfor %}
            {% endfor %}
        </
    div>

    </
    div
    Gegenüber dem Twig Template finde ich sogar die PHP Variante mit <?= sehr unübersichtlich

  22. #22
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von leo Beitrag anzeigen
    Das sind satte 8 Zeichen Einsparung pro Tag!
    Noe, nur 7 ^^

    strlen("<?= ") -> 4
    strlen("<?php echo ") -> 11


  23. #23
    Administrator Avatar von xchs
    Registriert seit
    19.06.2009.
    Beiträge
    14.558
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ein Semikolon gibt es auch noch.
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

  24. #24
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Das Semikolon kann man in beiden Varianten hinzufügen oder weg lassen, deshalb zählt es nicht

  25. #25
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.945

    Standard

    Zitat Zitat von leo.unglaub Beitrag anzeigen
    Das einzige Ergebnis ist, dass man den Code schwerer lesen kann.
    Ich sehe <?= weder, daß es den Code besser, noch , daß es den Code schlechter lesbar macht. Ist wohl hauptsächlich Geschmackssache.

    Wenn ich es unbedingt "kurz" haben will


    Code:
    EXTENSION=xhtml
    find -name *.${EXTENSION} | xargs sed -i -e"s/<?php echo /<?= /"
    und wieder zurück mit

    Code:
    EXTENSION=xhtml
    find -name *.${EXTENSION} | xargs sed -i -e"s/<?= /<?php echo /"

    Zitat Zitat von leo.unglaub Beitrag anzeigen
    * Tags die ich öffne schliese ich auch
    Ich sehe nicht, wo das bei <?php echo vs <?php relevant wäre.


    Zitat Zitat von leo.unglaub Beitrag anzeigen
    * Code muss einfach lesbar sein
    Vollkommene Zustimmung!

    Wahllos herausgegriffenes Beispiel aus modules/calendar/cal_default.xhtml

    # Original ...

    PHP-Code:
    <?php foreach ($this->days as $i=>$day): ?>
        <th class="label<?php if ($i == 0) echo ' weekend col_first'; if ($i == 6) echo ' weekend col_last'?>"><?php echo $day?></th>
    <?php endforeach; ?>
    # ... und "Fälschung"

    PHP-Code:
    <?php foreach ($this->days as $i=>$day): ?>
        <th class="label<?php if ($i == 0) echo ' weekend col_first'; if ($i == 6) echo ' weekend col_last'?>"><?= $day?></th>
    <?php endforeach; ?>
    # schöner (?) wäre etwas wie

    PHP-Code:
    <?php foreach ($this->days as $i=>$day): ?>
        switch ($i) {
            case 0:  $additional_css_classes = ' weekend col_first'; break;
            case 6:  $additional_css_classes = ' weekend col_last';  break;
            default: $additional_css_classes = '';
        }
        <th class="label<?php echo $additional_css_classes?>"><?php echo $day?></th>
    <?php endforeach; ?>
    weil das für mich auf einen Blick klar macht, was der Code erreichen will. Aber darüber kann man sicher endlos debattieren.

  26. #26
    Contao-Fan Avatar von bekanntmacher
    Registriert seit
    13.08.2009.
    Ort
    St. Gallen, Schweiz
    Beiträge
    354
    Partner-ID
    6419

    Standard

    Ich bin ganz klar für die kurze Schreibweise, ist meiner Meinung nach viel übersichtlicher da die Variablen (im Editor mit Syntaxeinfärbung) viel besser sichtbar sind.

  27. #27
    Contao-Fan Avatar von Fehrmann
    Registriert seit
    04.07.2009.
    Ort
    Wismar
    Beiträge
    581
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo,

    die persönlichen Vorlieben der Entwickler sehe ich eher als sekundär an. Auch ich müsste mich umstellen, würde das aber sicher auch tun. Ich sehe das eher wie einige Vorredner und betrachte die short-tags als Gewöhnungssache.

    Als deutlich wichtiger empfinde ich, das man sicherstellen sollte, das Contao bei den meisten Hostern lauffähig bleibt. Wenn die aktuellen Voraussetzungen für das kommende Contao3 PHP5.3 ist, dann sollten wir vorerst auf die Umstellung auf short-tags verzichten. Wenn dann als Voraussetzung irgendwann PHP 5.4 oder höher kommt, würde ich es in Erwägung ziehen.

    Viele Grüße
    R.Fehrmann
    Software-Entwickler Backend/Frontend

  28. #28
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    @Leo also wenn du den wirklich einführen willst, dann stelle bitte sicher, dass für PHP 5.3 die Option short_open_tag aktiviert ist. Laut Doku lässt sich die Option immer setzen, also auch per ini_set.

    Du musst also irgendwo in der Initialisierung das einbauen:
    PHP-Code:
    ini_set('short_open_tag'1); 

  29. #29
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Was haben aussagekräftige Methodenbezeichnungen mit dem short-tag in Templates zu tun?
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  30. #30
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Ich bin gegen short open tags.

    Damit kann man keine xml Templates mehr bauen ohne ekelhaften workaround (da dann php versucht das tag <?xml zu interpretieren).
    Ein
    PHP-Code:
    <?= "<?xml version=\"1.0\" />"?>
    <?= $this
    ->foo?>
    empfindet hierbei wohl keiner als einfacher zu lesen als
    PHP-Code:
    <?xml version="1.0" />
    <?php echo $this->foo?>
    Zudem ich bei <?= nicht sicher sein kann, dass es nicht etwaig auf irgendeinen anderen praeprozessor trifft, welcher es interpretiert (analog asp_tags und mehrere apache module geladen).

    Allgemein hab ich Bauchschmerzen mit den short tags, egal in welcher Variation, sei es nun <? oder auch <?=

    Als weiteres Negativargument: Da muss man ja ggf. etliche Syntax-highlighter (u.a. hier im Forum) nachrysten damit der code yberhaupt noch als php erkennbar ist.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  31. #31
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von xtra Beitrag anzeigen
    Ich bin gegen short open tags.

    Damit kann man keine xml Templates mehr bauen ohne ekelhaften workaround (da dann php versucht das tag <?xml zu interpretieren).
    Ein
    PHP-Code:
    <?= "<?xml version=\"1.0\" />"?>
    <?= $this
    ->foo?>
    empfindet hierbei wohl keiner als einfacher zu lesen als
    PHP-Code:
    <?xml version="1.0" />
    <?php echo $this->foo?>
    Das ist fast richtig, in PHP 5.4 würde das funktionieren solange short_open_tag=Off ist:
    PHP-Code:
    <?xml version="1.0" />
    <?= echo $this->foo?>
    In PHP 5.3 allerdings nicht, weil man dort <?= nur über die short_open_tag aktivieren kann.
    Die anderen Argumente sind aber auch richtig. Vor allem das fehlende Syntax Highlighting im Forum und in anderen System nervt (meine IDE macht es zum Glück richtig )

  32. #32
    Contao-Fan Avatar von joe
    Registriert seit
    20.06.2009.
    Ort
    Lüneburg
    Beiträge
    687
    User beschenken
    Wunschliste

    Standard

    Ich schaue bei sowas immer gerne nach links und rechts. Ich weiss das im Codeigniter Framework lange Zeit Short Tags in den Templates empfohlen wurde. Es wurde wieder zurück gerudert da es zu viele Probleme bei unterschiedlichen Hostern gab. Siehe Coding Standards: http://codeigniter.com/user_guide/ge...hort_open_tags

    Genau die gleiche Gefahr sehe ich auch bei Contao. Ich denke das eine Template Engine der einzig vernünftige Weg ist und solange sollte man beim alt bewährten bleiben was auf den Unterschiedlichen Hosting Paketen auch funktioniert.
    Trainings und Coachings zur Fort und Weiterbildung sowie Beratung in den Bereichen Contao, JavaScript, jQuery, VueJS, React, PHP, NodeJS und vielen weiteren Themen.

    Mehr unter jgreg.dev

    Follow me on Twitter @JoeRayGregory

  33. #33
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von leo.unglaub Beitrag anzeigen
    Noch dazu kommt, dass falls Leute mit override_function() arbeiten ich mir nicht sicher bin, dass PHP dann die modifizierte echo version verwenden würde.
    Aber... aber... aber.... echo ist doch gar keine function?
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  34. #34
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von xtra Beitrag anzeigen
    Aber... aber... aber.... echo ist doch gar keine function?
    Wie kommst du darauf?
    Code:
    $ php -r 'echo("foo");'
    foo

  35. #35
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Implementiert ist echo als Funktion und müsste sich mit override_function ersetzen lassen.
    echo und print lässt sich nur zusätzlich als Sprachkonstrukt ohne () verwenden.

  36. #36
    Contao-Hauptentwickler
    AG Core-Entwicklung
    Avatar von leo
    Registriert seit
    05.06.2009.
    Ort
    Wuppertal
    Beiträge
    816

    Standard

    @tril: Leider ist short_open_tag in PHP 5.3 auf PHP_INI_PERDIR gesetzt, so dass es sich nicht über ini_set() setzen lässt. Sonst hätte ich gar nicht erst gefragt

    Bezüglich Twig: Das Problem ist, dass Twig keinen PHP-Code parst. Fabien hat irgendwo sinngemäß mal geschrieben "never has, never will" und damit hat er ja auch Recht. Ansonsten wäre ich einer Umstellung auf Twig nicht abgeneigt gewesen.

  37. #37
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von leo Beitrag anzeigen
    @tril: Leider ist short_open_tag in PHP 5.3 auf PHP_INI_PERDIR gesetzt, so dass es sich nicht über ini_set() setzen lässt. Sonst hätte ich gar nicht erst gefragt
    Ah ok, das ist in der Doku leider nicht so dokumentiert.

    Zitat Zitat von leo Beitrag anzeigen
    Bezüglich Twig: Das Problem ist, dass Twig keinen PHP-Code parst. Fabien hat irgendwo sinngemäß mal geschrieben "never has, never will" und damit hat er ja auch Recht. Ansonsten wäre ich einer Umstellung auf Twig nicht abgeneigt gewesen.
    Ähm, was ist so schlimm daran?
    Dafür ist eine Template Engine doch da, man fügt ihr eigene Filter, Funktionen und Blöcke hinzu, wenn die build-in Fähigkeiten nicht ausreichen. Aber man verwendet kein PHP in einer Template Engine. Damit würde man die Template Engine ad absurdum führen...
    Ich mache übrigens gerade den Feldversuch mit einer größeren Extension die ich aktuell entwickel, siehe hier https://github.com/InfinitySoft/contao-twig

    MfG Tristan

  38. #38
    AG Core-Entwicklung Avatar von Psi
    Registriert seit
    19.06.2009.
    Ort
    Mittelfranken
    Beiträge
    930
    Partner-ID
    5583
    User beschenken
    Wunschliste

    Standard

    Aber man verwendet kein PHP in einer Template Engine. Damit würde man die Template Engine ad absurdum führen...
    Ich bin da etwas anderer Meinung!

    * Ich verwende dann PHP im TPL wenn ich schnell einen kundenspezifischen Dirty-Hack brauch. Natürlich und diskussionsfrei ist das kein guter Stiel aber im Sinne von Preis/Leistung durchaus adäquat.

    * Es gibt Logik die gehört in den View und NICHT in den Controller. Beispiel berechnete Attribute, Summenbildung, Datumsformatierungen ... Es ist einfach leichter im gewohnten PHP. Außerdem kann man hier sicher sein, dass man es umsetzten kann ohne eine Twig-Erweiterung.

    → Für mich wären Templates ohne PHP schmerzhaft, trotzdem werde ich mich Trils Twig Modul demnächst mal genauer ansehen



    <ontopic>Auf Short-Open-Tags würde ich verzichten, anscheinend sind sie doch nicht so unproblematisch einsetzbar. Und ganz ehrlich, die paar Zeichen mehr .... wayne</ontopic>
    Anerkennung motiviert: Amazon-Wunschliste && TANSTAAFL
    Kontakt: http://www.4wardmedia.de

  39. #39
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Psi Beitrag anzeigen
    * Ich verwende dann PHP im TPL wenn ich schnell einen kundenspezifischen Dirty-Hack brauch. Natürlich und diskussionsfrei ist das kein guter Stiel aber im Sinne von Preis/Leistung durchaus adäquat.
    Wieso glaubst du, dass du das nicht auch in einer Template-Engine ohne PHP schaffst?
    Vielleicht geht es mit der Template Engine sogar einfacher, als in PHP, das ist nämlich ebenfalls Sinn einer Template Engine, Funktionen zu vereinfachen.

    Zitat Zitat von Psi Beitrag anzeigen
    * Es gibt Logik die gehört in den View und NICHT in den Controller. Beispiel berechnete Attribute, ...
    Berechnete Attribute? Meinst du sowas:
    {% set friendlyEmail = firstname ~ " " ~ lastname ~ " <" ~ email ~ ">" %} ?

    Zitat Zitat von Psi Beitrag anzeigen
    ... Summenbildung, ...
    und sowas:
    {% set sum = var1 + var2 + var3 %}

    Zitat Zitat von Psi Beitrag anzeigen
    Datumsformatierungen ...
    und sowas:
    {{ timestamp|dateFormat }}
    {{ timestamp|datimFormat }}
    (die zwei Filter stammen aus meiner Twig Erweiterung)

    oder Twig nativ:
    {{ timestamp|date('H:i:s') }}

    Zitat Zitat von Psi Beitrag anzeigen
    Es ist einfach leichter im gewohnten PHP.
    Ich behaupte, das ist ein Irrglaube, resultierend daraus das du Twig zu wenig kennst

    Zitat Zitat von Psi Beitrag anzeigen
    Außerdem kann man hier sicher sein, dass man es umsetzten kann ohne eine Twig-Erweiterung.
    Du musst ja noch nicht mal immer eine Twig Erweiterung schreiben, es reicht wenn du die Funktion schreibst und registrierst. http://twig.sensiolabs.org/doc/advanced.html

    Zitat Zitat von Psi Beitrag anzeigen
    → ..., trotzdem werde ich mich Trils Twig Modul demnächst mal genauer ansehen
    Will ich doch hoffen, ich Erweitere die Integration aktuell auch hier und da immer wieder, um einfach den Anforderungen im Contao Context gerecht zu werden

    Ich bin halt aufgrund meiner Vergangenheit von Smarty noch angehaucht und überzeugt, man konnte mit Smarty schon sehr viel machen und mit Twig noch mehr

    *Thread gekapert*

  40. #40
    Alter Contao-Hase Avatar von christian
    Registriert seit
    15.06.2009.
    Ort
    Viersen
    Beiträge
    1.038
    Partner-ID
    387

    Standard

    Mir scheinen die Nachteile der Short Tags größer zu sein als die Vorteile - von daher würde ich das nicht gerne ändern.

    Templates ohne PHP fände ich auch sehr schmerzhaft. Sicher, man kann andere Konstrukte nutzen (siehe oben), aber ob man damit immer alles abbilden kann, was man über PHP kann..... Zweifel. Datenbankabfragen? Includes? Abgeänderte Inserttags? Replaces auf fertig generierten Ausgabecode? Alles Sachen, die man oft braucht, wenn eben keine Extension dafür geschrieben/bezahlt werden muss/soll. Die derzeitigen Möglichkeiten bieten maximale Flexibilität. Würde das irgendwann wegfallen, würde Contao eines der Hauptargumente für seinen Einsatz "wegverbessern". Aber soweit sind wir ja noch nicht

    Grüße,

    Christian
    Contao-Partner am Niederrhein
    Templating - Komplettservice - Erweiterungen
    Infos: http://delahaye.de

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •