Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP HMVC Framework

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP HMVC Framework

    ...


  • #2
    Ich habe es mal etwas überflogen und tatsächlich ist das besser als ein Haufen Zeug, was ich bisher gesehen habe. Aber:

    * Apache und Nginx Unterstützung.
    Was ist damit gemeint?

    Ein paar Details fallen direkt auf:

    Bsp.: https://github.com/ClanCats/Framewor...pp.php#L32-L56 Weder gibt es in PHP void, noch gibt die Methode überhaupt irgend etwas zurück.

    Hast Du mal geschaut, was "wake" auf Deutsch heißt?

    https://github.com/ClanCats/Core/blo...rc/coremap.php -> Warum stellst Du dann nicht lieber via Composer eine Classmap her?

    https://github.com/ClanCats/Core/blo.../shortcuts.php -> Der erste Schritt zur Unübersichtlichkeit.

    Über das ganze Framework hinweg sind extrem viele statische Aufrufe verteilt -> Sackgassengefahr.

    https://github.com/ClanCats/Core/blo...1400000000.sql -> Was hat das im Code verloren?

    Warum gibt es "bundles" aber auch "classes"?

    Kommentar


    • #3
      void ist ein null-alias, kann weg gelassen werden wenn void der einzige return wert ist. Daran ist nichts auszusetzen.
      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

      Kommentar


      • #4
        Zitat von xm22 Beitrag anzeigen
        Was ist damit gemeint?
        Es klingt gut. Nein scherz, es gibt keine Abhängigkeiten an bestimmte Apache parameter oder umgebungsvariablen sofern richtig konfiguriert läuft es somit auf jedem beliebigen Webserver. ( Ist allerdings schon fast eine Selbstverständlichkeit für ein Framework )

        Zitat von xm22 Beitrag anzeigen
        https://github.com/ClanCats/Framewor...pp.php#L32-L56 Weder gibt es in PHP void, noch gibt die Methode überhaupt irgend etwas zurück.
        Soweit es mir bekannt ist, wird da PHPDoc von C++ inspiriert ist, im falle das eine funktion nichts zurück gibt, für die automatische Dokumentation `void` angegeben. Sollte ich hier komplett daneben liegen so bitte klärt mich auf

        Zitat von xm22 Beitrag anzeigen
        Hast Du mal geschaut, was "wake" auf Deutsch heißt?
        "Wecken" nicht mit Wacken zu verwechseln.

        Zitat von xm22 Beitrag anzeigen
        https://github.com/ClanCats/Core/blo...rc/coremap.php -> Warum stellst Du dann nicht lieber via Composer eine Classmap her?
        Am liebsten würde ich Direkt auf Composer mit PSR-4 umsteigen. Aber, das grosse aber ist ich habe noch keine "Sinnvolle" Lösung gefunden. Das problem:
        Das Kern Konstrukt baut auf den sogenannten bundles auf. Diese beinhalten mehre typen von Dateien. Meist php aber nicht immer. Da ich diese Dateien / Ressourcen von überall beziehen könne möchte benötigte ich einen eigenen speziellen Autoloader der CCFinder.

        Als Beispiel eine view kann sich nicht nur unter app/views/ befinden sondern auch an diversen anderen orten ausserdem befindet sich eine view auch nicht im PHP namespace.

        zb. 2 Bundles:

        Code:
        [Blog]
         - /classes/
           - Entry.php
         - /views/
           - entry.php
        
        [Author]
         - /classes/
           - Author.php
         - /views/
           - author.php
        Mit dem CCF autoloader kann ich nun auf beide views sowie auf bei Klassen von überall aus zugreifen:

        PHP-Code:
        $view CCView::create('Blog::enrty');

        $author = new Author\\Author
        Es fällt mir gerade etwas schwer verständlich zu erklären warum sich das autoloading im Augenblick nicht von Composer ablösen, dafür müsste ich wohl erheblich tiefer ins Detail.

        Zitat von xm22 Beitrag anzeigen
        https://github.com/ClanCats/Core/blo.../shortcuts.php -> Der erste Schritt zur Unübersichtlichkeit.
        Um ganz offen zu sein ich bin auch kein Fan von dieser Lösung aber shortcuts sind Notwendig, wenn ich bei jeder Übersetzung `CCStr::line()` schreiben müsste würde ich mir die Haare vom Kopf reissen.

        Zitat von xm22 Beitrag anzeigen
        Über das ganze Framework hinweg sind extrem viele statische Aufrufe verteilt -> Sackgassengefahr.
        Absolut wahr, habe ich auch bereits unter den Kritik Punkten genannt.

        Zitat von xm22 Beitrag anzeigen
        Das ist eine Datenbank migration und die ist ganz bewusst dort durch den Modularen Aufbau. Auch die Datenbank Migrationen gehören zu einem Modul. Halte ich persönlich für strukturierter als alle in einen einzigen Ordner zu Pflanzen. Oder gilt die Kritik des nicht vorhanden seins eines Schema-Generators?

        Zitat von xm22 Beitrag anzeigen
        Warum gibt es "bundles" aber auch "classes"?
        Ich Referenziere nach oben.

        ---

        Auf jedenfall Vielen Dank für dein Feedback, ich nehme jeden Input zu herzen und lasse ihn meisst auch gleich auf meine ToDo liste wandern.

        Kommentar


        • #5
          Zum Thema shortcuts: Besser 8-12 Zeichen die nahezu erklären was man da aufruft als verstümmelte nichtssagende shortcuts die ich auswendig kennen muss um sie zu verstehen.

          In Summe bisher: Das static-Konzept stößt auf.
          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

          Kommentar


          • #6
            Zitat von mario Beitrag anzeigen
            [...]
            Um ganz offen zu sein ich bin auch kein Fan von dieser Lösung aber shortcuts sind Notwendig, wenn ich bei jeder Übersetzung `CCStr::line()` schreiben müsste würde ich mir die Haare vom Kopf reissen.
            [...]
            Übersetzungen von Template-Inhalten? Das ist ja Sache der Template-Engine und die Zeile Code kommt genau einmal vor. Ansonsten wäre das ja nicht DRY...
            GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

            Kommentar


            • #7
              So eine Lösung und so eine Präsentation ist nach 4 Jahren "Lernfortschritt" wirklich kindisch.

              Welchen Mehrwert bietet dieses Framework?
              Was kann diese Lösung besser als das, was es bereits gibt?
              Standards - Best Practices - AwesomePHP - Guideline für WebApps

              Kommentar


              • #8
                Zum Thema shortcuts: Besser 8-12 Zeichen die nahezu erklären was man da aufruft als verstümmelte nichtssagende shortcuts die ich auswendig kennen muss um sie zu verstehen.
                Also zur Übersetzung und zum escaping:

                PHP's interne gettext funktion implementiert den alias `_()` um diesen nicht auf die Füße zu treten ist der Alias bei CCF `__()` also mit zwei underscores. Ich habe diesen Alias nicht erfunden er wird von diversen anderen Open Source Applikationen ebenso implementiert. Ich gebe zu beim ersten Blick auf ein Projekt werden diese ominösen __ calls eine verwirrende Wirkung haben, aber wenn man deren Bedeutung kennt ist dieser shortcut meiner Meinung nach übersichtlicher als ausgeschrieben.

                Beispiel ohne shortcut:

                PHP-Code:
                <div id="main-container">
                    <
                h1>{{CCLang::line(':action.title')}}</h1>
                    <
                div class="items">
                        {% 
                each $items as $item %}
                        <
                div class="item">
                            <
                h2>
                                <
                a href="{{CCUrl::to($item->url())}}">#</a>
                                
                {{CCLang::line('item.title.label') . CCStr::htmlentities$item->title )}}
                            </
                h2>
                            <
                small>{{CCLang::line('item.content.label')}}</small>
                            <
                div>
                                {{
                CCStr::htmlentities$item->content )}}
                            </
                div>
                        </
                div>
                        {% 
                endeach %}
                    </
                div>
                </
                div
                Und mit:

                PHP-Code:
                <div id="main-container">
                    <
                h1>{{__(':action.title')}}</h1>
                    <
                div class="items">
                        {% 
                each $items as $item %}
                        <
                div class="item">
                            <
                h2>
                                <
                a href="{{to($item->url())}}">#</a>
                                
                {{__('item.title.label') . _e$item->title )}}
                            </
                h2>
                            <
                small>{{__('item.content.label')}}</small>
                            <
                div>
                                {{
                _e$item->content )}}
                            </
                div>
                        </
                div>
                        {% 
                endeach %}
                    </
                div>
                </
                div
                Es gibt ja selbstverständlich keinen Zwang diese zu verwenden, aber ich denke dieser Punkt variiert extrem von Person zu Person. Aber ich kann den Punkt absolut verstehen wenn ich mich an eine Software setzte und funktionen wie `qg`, `af` oder was auch immer auffinde schiebe ich auch die Kriese.

                Und shortcuts wie `_d`, `_dd`, `ui` usw. wird man im Code selber niemals antreffen da diese lediglich für Debug zwecke benötigt werden.

                In Summe bisher: Das static-Konzept stößt auf.
                Wie bereits zum 2ten mal: "Absolut wahr, habe ich auch bereits unter den Kritik Punkten genannt."

                Hier übrigens ein Interessanter Link warum:
                http://misko.hevery.com/2008/12/15/s...o-testability/

                Und weiter gehts.

                So eine Lösung und so eine Präsentation ist nach 4 Jahren "Lernfortschritt" wirklich kindisch.
                Ich spreche dir meinen Grossen Dank aus meine Arbeit als "Kindisch" zu bezeichnen, es muss schliesslich höllisch nerven immer wieder das Kinderzeugs von so Unstudierten Proleten wie mir im Internet zu sehen.. Ich komme mit Kritik sehr gut zurecht, aber das war nichts anderes als eine Gemeine Beleidigung.

                Welchen Mehrwert bietet dieses Framework?
                Was kann diese Lösung besser als das, was es bereits gibt?
                Es ist ein weiteres Produkt im Markt, es gibt Vorteile und es gibt Nachteile. Diese werden von Person zu Person anders empfunden. Wenn ein neuer Softdrink auf den Markt kommt pöbelst du doch auch nicht den Hersteller an was an diesem Geschmack besser sein soll als bei der Konkurrenz?

                Kommentar


                • #9
                  Nein, du hast das Rad nur zum x-ten mal neu erfunden. Du damit stellst hier also das Framework der Woche vor. Daher finde ich die Frage berechtigt: Was kann es denn besonderes?

                  Und nein, statische Methoden behindern nicht nur die testability. Wenn das dein Lernstand ist, dann hast du gerade mit OOD begonnen.

                  Nichts für ungut...
                  Standards - Best Practices - AwesomePHP - Guideline für WebApps

                  Kommentar


                  • #10
                    static-Implementierung knebeln die Klasse in einen Singleton zustand und sind somit schon aus Wiederverwertbarkeitssicht ein Problem. Ander Frameworks ( laravel ) haben da auch ganz schnell die Finger von gelassen und arbeiten nur noch mit static Facades, die wiederum auf Container Entities zeigen.
                    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                    Kommentar


                    • #11
                      Zitat von rkr Beitrag anzeigen
                      Nein, du hast das Rad nur zum x-ten mal neu erfunden. Du damit stellst hier also das Framework der Woche vor. Daher finde ich die Frage berechtigt: Was kann es denn besonderes?

                      Und nein, statische Methoden behindern nicht nur die testability. Wenn das dein Lernstand ist, dann hast du gerade mit OOD begonnen.

                      Nichts für ungut...
                      Lieber Herr Guru, Mama hat immer gesagt ich mich nur an eine Regel halten soll: "Don't be a Dick!".

                      Nichts für ungut aber mein winziges Hirn will einfach nicht einsehen wie mein "Lernstand" oder mein "Intellekt" je nach interpretation bei dir zum Thema wird.

                      Es kann doch wirklich nicht so schwer seine Kritik Konstruktiv zu Formulieren und Objektiv zu bleiben. Wenn sich alle an diese einfache Regel halten würden hätten viel weniger Leute angst Ihre Arbeit im Internet zu präsentieren. Ebenso würde das Selbstbewusstsein vieler Junger Menschen zu Abwechslung mal gestärkt. Es gibt viele, sehr viele Menschen dort draussen die etwas erschaffen wollen, diese in Ihren Anfängen zu Unterstützen sollte das Ziel sein, sie zu demoralisieren hält die Entwicklung nur zurück.

                      Nun zurück zum Thema:

                      static-Implementierung knebeln die Klasse in einen Singleton zustand und sind somit schon aus Wiederverwertbarkeitssicht ein Problem. Ander Frameworks ( laravel ) haben da auch ganz schnell die Finger von gelassen und arbeiten nur noch mit static Facades, die wiederum auf Container Entities zeigen.
                      Absolut Korrekt ist wie bereits mehrmals erwähnt schon lange unter den Kritik Punkten und steht ebenso lange auf meiner ToDo list für ein mögliches nächstes release.

                      Kommentar


                      • #12
                        Also wenn Du schon im gehobenen SD Forum hier nach Kritik fragst und selbst Deine Lößung kritisch siehst, dann frage ich mich, was an der Antwort von rkr jetzt so schlimm oder unkonstruktiv war.

                        Wenn sich alle an diese einfache Regel halten würden hätten viel weniger Leute angst Ihre Arbeit im Internet zu präsentieren. Ebenso würde das Selbstbewusstsein vieler Junger Menschen zu Abwechslung mal gestärkt.
                        Hier im Forum sieht man täglich die dollsten Dinger und die DAUs mit den größten Egos. Also ich sehe die beschriebene Gefahr gerade nicht.
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Und es gibt nochmal soviele Menschen die anders Denken wie du und sich nicht immer deinem Gemütszustand passend ausdrücken, shit happens. Darüber jetzt ein Fass aufzumachen ist so Sinnvoll wie Mikroben stricken beizubringen.
                          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                          Kommentar


                          • #14
                            Zitat von mario Beitrag anzeigen
                            Es kann doch wirklich nicht so schwer seine Kritik Konstruktiv zu Formulieren und Objektiv zu bleiben. Wenn sich alle an diese einfache Regel halten würden hätten viel weniger Leute angst Ihre Arbeit im Internet zu präsentieren. Ebenso würde das Selbstbewusstsein vieler Junger Menschen zu Abwechslung mal gestärkt. Es gibt viele, sehr viele Menschen dort draussen die etwas erschaffen wollen, diese in Ihren Anfängen zu Unterstützen sollte das Ziel sein, sie zu demoralisieren hält die Entwicklung nur zurück.
                            Du solltest dich von dem Gedanken lösen, dass ich dir nur böses will.

                            Die Menschen da draußen, die sich auf machen etwas Großes zu schaffen, bekommen meinen Respekt als Vorschuss. Die einzige Bedingung ist, dass es in irgendeiner Form besonders ist.

                            Ich habe wirklich besseres zu tun, als alle MVC-Frameworks die es da draußen so gibt zu rezensieren. Wenn du jetzt gedacht hast, dass du mit dieser Leistung in den Kreis der bewundernswerten MVC-Authoren kommst... Vielleicht. Das entscheide ich nicht. Aber ich bezweifle zumindest, dass du es damit auf awesome-php schaffst.
                            Standards - Best Practices - AwesomePHP - Guideline für WebApps

                            Kommentar


                            • #15
                              Da stimme ich euch dreien zu. Ich wollte rkr jetzt auch nicht als den bösen Anprangern und entschuldige mich dafür.

                              Nun ich suche nach Inputs und Kritik bezüglich des Frameworks und nicht meiner eigenen Person. Ich bin schliesslich hier um zu erfahren was nicht gut ist, damit ich das Framework und somit auch meinen Lernstand verbessern kann

                              Ich wollte euch keines wegs DAS framework des Jahrhunderts verkaufen, es ist ein Projekt unter Tausenden, das ist mir sehr wohl bewusst und um etwas wirklich grosses zu erschaffen muss ich noch sehr viel Lernen aber dafür bin ich ja Hier.

                              Kommentar

                              Lädt...
                              X