• Jeder User im Forum verpflichtet sich zur Akzeptanz und zur Einhaltung dieser Regeln:
    1. Umgangston
      Ein angemessener höflicher Umgangston, ohne Beleidigungen, Beschimpfungen und aggressive Postings ist für jedes Mitglied Pflicht.
    2. Beiträge
      Jedes Mitglied sollte sich bemühen nur sinnvolle Beiträge zum Thema zu posten. Dabei ist unbedingt vorher zu prüfen, ob das Thema vorher schon einmal diskutiert wurde und daher fortgesetzt werden kann
      • Suchfunktion benutzen!
      • offizielle Doku lesen!
    3. Haftung
      Jeder Beitragsersteller übernimmt die alleinige Verantwortung seiner Inhalte.
    4. Werbung
      Wir erlauben keine Beiträge, Signaturen, Private Nachrichten oder eMails an Benutzer, die Werbung enthalten. Ausgenommen
      sind Stellengesuche /-angebote, welche ausschließlich im Forum "Stellengesuche" veröffentlicht werden dürfen.
    5. Verstöße
      Regelwidrige Beiträge sollten dem Team gemeldet werden. Nach deren Überprüfung werden wir schnellstmöglich
      entsprechend handeln.
    6. Authorität
      Den Anweisungen der Team-Mitglieder (Administratoren und Moderatoren) sind in diesem Forum Folge zu leisten.
      Bei Fragen oder Beschwerden bitte an diese wenden.
    Wir möchten Euch darauf aufmerksam machen, dass es bei Verstößen gegen einen oder mehreren der oben genannten
    Punkte dem Team frei steht entsprechend zu handeln. Dies kann z.B. das Löschen eines Beitrags, das Ausschliessen bzw.
    Sperren von Mitgliedern oder aber lediglich eine Verwarnung sein.

    In diesem Zusammenhang sollte erwähnt werden, dass das Forum automatisch die IP-Adresse jedes Beitrag-Erstellers
    speichert. Bei schweren Vergehen, behalten wir es uns vor, die IP-Adresse zur Strafverfolgung weiterzugeben.
  • Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

Zend Framwork 2 Module FacebookApi

flod

New member
Hallo zusammen,

ich habe für den Ein/Umstieg auf das Zend Framework 2, mal ein eigenes Zend Module geschrieben und unter

https://zfmodules.com/flod1/FacebookApi bzw
https://github.com/flod1/FacebookApi

veröffentlicht.

Wer Lust und Zeit hat kann mir gerne Feedback zum Code und Struktur geben.

Wer gerne mithelfen möchte ein sauberes, und simples FacebookApi Modul zu programmieren, kann sich gerne bei mir melden.


(PS: es befindet sich noch in der Entwicklung)
 

Kaiuwe

Super-Moderator
ich habe für den Ein/Umstieg auf das Zend Framework 2
Wir sind bei Version 3! Daher gleiche diese Version verwenden.

Wer Lust und Zeit hat kann mir gerne Feedback zum Code und Struktur geben.
Ich habe es mal überflogen und folgendes ist mir aufgefallen:

  • PHP 5.3 ist tot! Wir sind bei Version 7.
  • Es wird eine altes ZF verwendet.
  • Es wird noch das gesamte Framework installiert.
  • Einen Coding Standard scheint nicht vorhanden zu sein, daher einfach PSR anwenden.
  • Keine DocBlocks!
  • „AbstractController“ entfernen, denn dies braucht kein Mensch - (abstrakte) Fabrik nehmen.
  • Zugriff auf den Service Locator im Kontroller ist falsch und wird auch in aktuellen ZF-Versionen nicht mehr funktionieren – siehe Fabrik verwenden.
  • „Zend\Loader“ („Module::getAutoloaderConfig()“) kann aus der Modul-Klasse entfernt werden – Composer verwenden.
  • „Module::getServiceConfig()“ ist ebenfalls überflüssig, denn dieser Part kann in die vorhandenen Konfigurationsdatei verschoben werden.
  • Anpassungen und Vorbereitungen für ZF3 fehlen.
  • „var_dump“ und „die“ mehrfach vorhanden.
  • Die Verwendung der PHP-Tags in den View-Skripten ist leider falsch, denn standardmäßig ist die kurze Variante nicht aktiviert. „<?echo“ ist falsch, „<?=“ und „<?php“ verwenden!
  • Die Klammern bei „if“ und „foreach“ in den View-Skripten nicht verwenden, denn dies ist einfach unleserlich. „if ():“ und „endif“ ist einfacher.
Ist nur eine lose Aufzählung von Hinweisen und keine Kritik!
 

flod

New member
Wir sind bei Version 3! Daher gleiche diese Version verwenden.


Ich habe es mal überflogen und folgendes ist mir aufgefallen:

  • PHP 5.3 ist tot! Wir sind bei Version 7.
  • Es wird eine altes ZF verwendet.
  • Es wird noch das gesamte Framework installiert.
  • Einen Coding Standard scheint nicht vorhanden zu sein, daher einfach PSR anwenden.
  • Keine DocBlocks!
  • „AbstractController“ entfernen, denn dies braucht kein Mensch - (abstrakte) Fabrik nehmen.
  • Zugriff auf den Service Locator im Kontroller ist falsch und wird auch in aktuellen ZF-Versionen nicht mehr funktionieren – siehe Fabrik verwenden.
  • „Zend\Loader“ („Module::getAutoloaderConfig()“) kann aus der Modul-Klasse entfernt werden – Composer verwenden.
  • „Module::getServiceConfig()“ ist ebenfalls überflüssig, denn dieser Part kann in die vorhandenen Konfigurationsdatei verschoben werden.
  • Anpassungen und Vorbereitungen für ZF3 fehlen.
  • „var_dump“ und „die“ mehrfach vorhanden.
  • Die Verwendung der PHP-Tags in den View-Skripten ist leider falsch, denn standardmäßig ist die kurze Variante nicht aktiviert. „<?echo“ ist falsch, „<?=“ und „<?php“ verwenden!
  • Die Klammern bei „if“ und „foreach“ in den View-Skripten nicht verwenden, denn dies ist einfach unleserlich. „if ():“ und „endif“ ist einfacher.
Ist nur eine lose Aufzählung von Hinweisen und keine Kritik!
Kannst du mir zu folgenden Punkte alternativen anbieten?


  • „Zend\Loader“ („Module::getAutoloaderConfig()“) kann aus der Modul-Klasse entfernt werden – Composer verwenden.
Dann findet er meine Controller klassen nicht mehr.


  • „AbstractController“ entfernen, denn dies braucht kein Mensch - (abstrakte) Fabrik nehmen.
  • Zugriff auf den Service Locator im Kontroller ist falsch und wird auch in aktuellen ZF-Versionen nicht mehr funktionieren – siehe Fabrik verwenden.
Wie baue ich den eine Fabrik für die Controller?
 

Kaiuwe

Super-Moderator
Dann findet er meine Controller klassen nicht mehr.
Weil du höchstwahrscheinlich die Angaben im Composer vergessen hast. Siehe im ersten Tutorial vom ZF unter „Autoloading“.

Wie baue ich den eine Fabrik für die Controller?
Auch hier hilft dir die Dokumentation: „Configuring the service manager: Factories

Da der Facebook-Service aber in jedem Kontroller benötigt wird, kannst du eine Fabrik für alle Kontroller verwenden. Das läuft dann über eine abstrakte Fabrik: „Configuring the service manager: Abstract factories


Damit solltest du zum Ziel kommen. Ansonsten einfach melden.
 

Kaiuwe

Super-Moderator
Der "BaseController" ist immer noch völlig unnötig! Wenn du jedem Kontroller per Konstruktor den Service bereitstellst, dann brauchst du keine "Getter"- und "Setter"-Methoden dafür! Ja, so einfach ist es. :D

Verabschiede dich mal von solchen Gedankenspielen, denn es gibt eleganter Wege als "extends" und abgeleitet Kontroller waren schon in ZF1 und ZF2 überflüssig. In ZF3 sind weitere und bessere Wege vorhanden und mit "Zend\Expressive" hast du nicht mal Kontroller. :)
 

flod

New member
danke, hab auch schon m wochenende mal einen test mit controllerfactory gemacht. aber wie ich nun mit einer Factory für mehrere Controller mache, habe ich noch nicht ganz verstanden.
Kannst du mir einen ansatz geben?
 
Zuletzt bearbeitet:

Kaiuwe

Super-Moderator
aber wie ich nun mit einer Factory für mehrere Controller mache, habe ich noch nicht ganz verstanden. Kannst du mir einen ansatz geben?
Der Ansatz ist doch schon da: „CommonControllerFactory

(Achtung ZF3!)
PHP:
use Interop\Container\ContainerInterface;
use Zend\ServiceManager\Factory\AbstractFactoryInterface;

class AbstractControllerFactory implements AbstractFactoryInterface
{
    /**
     * @inheritDoc
     */
    public function canCreate(ContainerInterface $container, $requestedName)
    {
        return 0 === strpos($requestedName, 'FbPage\Controller');
    }

    /**
     * @inheritDoc
     */
    public function __invoke(
        ContainerInterface $container, $requestedName, array $options = null
    ) {
       // …
    }
}
Und in deiner Konfiguration:
PHP:
'controllers'     => [
    'invokables'         => [],
    'factories'          => [],
    'abstract_factories' => [
        'FbPage\Controller\Foo' => \FbPage\Controller\AbstractControllerFactory::class,
        'FbPage\Controller\Bar' => \FbPage\Controller\AbstractControllerFactory::class,
        // …
    ],
],
(Manch einer mag als Name eher „ControllerAbstractFactory“ um auf das implementierte Interface hinzuweisen.)

Nachtrag:
Meine Konfiguration beinhaltet nur die Hinweise aus dem Teil „Best practices“ der Dokumentation.
 
Zuletzt bearbeitet:

flod

New member
Danke dir, wer ich mal testen, ich werde aber nun erstmal alle examples rausschmeissen und in die applicationen verlagern und mich auf die widgets fokusieren.
 
Oben