Home / Dokumente / eZ components vs PEAR

eZ publish Enterprise components / eZ components vs PEAR

Die eZ Components ( kurz ezc ) sind eine Sammlung von PHP Bibliotheken die für die Bewältigung relativ allgemeiner Aufgaben benutzt werden können.

eZ publish Enterprise components / eZ components vs PEAR

Die eZ Components ( kurz ezc ) sind eine Sammlung von PHP Bibliotheken die für die Bewältigung relativ allgemeiner Aufgaben benutzt werden können. Diese Bibliotheken werden die Basis seinen auf dem der Kernel des neuen eZ publish 4 aufsetzt.

Solche Biliotheken existieren schon. Die ezc sind also keine Weltneuheit. De facto muss man aber sagen, dass die ezc die derzeit fortschrittlichsten und professionellsten sind. Ob diese Eierlegende Wollmilchsau wird muss sich noch beweisen.

Zend hingegen hat größere aber gleiche Pläne. Eine große Ankündigung ließ uns frohlocken. Die verstrichene Zeit und die spärlichen Informationen lassen uns zweifeln.

Geschichte

  • Juni 2005 Ankündigung der Entwicklung von eZ publish 4 mit dem den eZ compontens
  • Juli 2005 Start der Planungen und Entwicklung der eZ components
  • 28. November Release des ersten Beta
  • Final Release im Januar?

Ziele

  • Zur Verfügungstellung von einheitlicher, stabiler und zuverlässiger Bibliotheken
  • Die Entwicklung der ezc soll sich in Anlehnung der gerade neuesten PHP Version vollziehen.
  • Lieferung eines für Unternehmen attraktiven Ansatzes. Verbindung von open source und gleich zeitig kommerziellen Support zu eZ publish.
  • Erstellung von neuen Konzepten nach Analyse anderer erfolgreicher Konzepte ( PEAR, Horde, Zend und andere ) zur einen neuen Ganzen.

Technische Ziele und Eigenschaften

  • On Demand Loading
  • So wenige Abhängigkeiten wie möglich schaffen wenn anders möglich werden so genannte TieIn erstellt, die Komponenten verbinden.
  • Strikte Coding Standards für Komponenten die folgende Eigenschaften beschreiben
    • Struktur
    • Code
      • Autoloads
      • Error handling
      • Konfiguration
      • Exceptions
      • Namensgebung
    • Design
      • Diagrams
      • Data structures
      • Algorithms
      • Guidelines
    • Documentation
    • Versionierung
  • Qualitäts-Sicherung, Unit-Tests
  • Verwendung von Strucs über Arrays

Beispiel Übersicht von Abhängigkeiten

Bedeutung für eZ publish

  • Teil der Migration von eZ publish 3 zu eZ publish 4
  • Teil der Migration von PHP4 zu PHP6

Harte Fakten

  • Wieder verwendbare Klassen
  • Kontrollierte Entwicklung, Qualitativ Hochwertig, Release Zyklen für jede Komponente
  • Klare Trennung zwischen einzelnen Komponenten untereinander und dem eZ publish Kernel
  • Unit Tests und Dokumentation (PHPDoc) für jede Komponente
  • Die ezc benötigen PHP 5.1 und einige werden nur mit PHP 6 laufen welches der Zeit in Entwicklung ist.
  • ezc sind erhältlich unter BSD Lizenz.
  • Die ezc sind über SVN, den PEAR Installer oder als Download verfügbar.

Installation

Zum Installieren über den PEAR müssen nacheinander folgende Kommandos ausgeführt werden. Wenn die ezc aus dem Beta stadium raus sind wird das Kommando pear config-set nicht mehr benötigt. Der PEAR installiert standardmäßig nur Pakete die den Final sind.

            

pear channel-discover components.ez.no

pear config-set preferred_state beta

pear install -a  ezc/eZComponents

Folgende Zeile updated die Komponenten

pear upgrade ezc/eZComponents

Zum installieren über Subversion müssen nach und nach folgende Komandos ausgeführt werden

     
  

svn co http://svn.ez.no/svn/ezcomponents/packages  .
  svn co http://svn.ez.no/svn/ezcomponents/scripts       
  ./scripts/setup-env.sh

Klappt noch nicht für Windows. Also erstmal mit dem PEAR Installer vorlieb nehmen. Oder die Autoloads erstmal aus dem Download-Paket nehmen und in die working copy legen.

PEAR vs eZ compoents

Es gibt z.Z. 487 PEAR Packete und 19 eZ components, die mit 35 ersteren konkurrieren.

Version PHP5 und PHP6 PHP4 und PHP5
Ersteller Firma Community
Installation PEAR Installer PEAR Installer
Error Handling Exceptions PEAR Error Handling
Documentation PHPDoc PHPDoc
Versionierung x.y.z x.y.z
Struktur Flacher Source Tree mit HEAD/trunk und Releases in eigenen Ordnern Flacher Source Tree

Beispiele am Code

Dieses kleine Script sended erst eine MIME E-Mail mit Attachment mit HTML Teil mit einem eingebundenen Bild. An diesem nicht speziell herrausgesuchtem Beispiel sehen wir aber schon wie sich die Unterschiede ausprägen. Wir werden nun da wir kein weiteres Beispiel zum Vergleich herangezogen haben stark verallgemeinern.

Vorteile der ezc

  • Bessere QA. Weniger Bugs gefunden. Bugs werden schneller gefixed.
  • Code erscheint einfacher, aufgeräumter und besser strukturiert. Professioneller!
  • Fehleranfälligkeit der Bibliotheken bessert
    • Structs, Setter und Getter-Methoden helfen bei der validierung der Übergabeparameter.
    • Try and Catch zwingen den Coder Fehler abzufangen.
  • Weniger includes
  • Ein LEAD-Maintainer ( eZ systems ) kann dafür sorgen, dass Interfaces natlos in einander übergreifen ohne rücksicht auf andere zu nehmen: $transport->send( $mail );
  • Fehler Meldungen mit "variable references" deuten darauf hin, dass der Code backwards kompatible ist. Das deutet Unsicherheiten und einen nicht optimalen Code hin.
  • Code vereinfachung birgt Risiken. E-Mail Header TO ( To: bjoern@xrow.de ) ist zwingend gleich dem Empfänger des SMTP Protokolls ( rcpt to:bjoern@xrow.de ). Technische Möglichkeiten sind damit nicht voll abgebildet. Ich denke Mailinglisten würden sich freuen, wenn sie die Selbe E-Mail and unterschiedliche Leute schicken könnten. Zu gibt es bestimmt auch ein RFC zu nachlesen.
  • PHP5 lässt sich auch ohne Structs, try/catch, autoloading und erweiterete objektoritentierte Features schreiben. Solche Sachen verwirren, wenn man nciht daran gewohnt ist. Was war oder ist immer noch der Vorteil von PHP gegen über e.g. Java und ähnlichen Sprachen. Mein Tipp: Es war die Einfachheit die PHP zur am häufigst eingesetzen und verbreitesten Scriptsprache machten.
        

<?php        

error_reporting( E_ALL );        

### Sending a Mime Mail with eZ components ###        

require_once 'Base/base.php';        

function __autoload( $className )        

{        

ezcBase::autoload( $className );        

}        

$mail = new ezcMailComposer();
  $mail->from = new ezcMailAddress( 'null@example.com', 'Björn Dieding' );
  $mail->addTo( new ezcMailAddress( 'bjoern@xrow.de' ) );
  $mail->subject = "[ezc] Example HTML email with attachments";
  $mail->plainText = "Here is the text version of the mail.";
  $mail->htmlText = "<html>HTML + image: <img src='file://C:/workspace/ezc/test.jpg' /></html>";
  $mail->addAttachment( __FILE__ );
  $mail->build();        

try
{
  $transport = new ezcMailTransportSmtp( "192.168.0.252" );
  $transport->send( $mail );
  }
catch ( Exception $e )
{
  echo "Failed: ", $e->getMessage(), "\n";
}        

### Sending a Mime Mail with PEAR ###        

include "Mail.php";
include "Mail/mime.php";
$mail = new Mail_Mime();
$mail->setHTMLBody( "<html>HTML + image: <img src='file://C:/workspace/ezc/test.jpg' /></html>" );
$mail->setTXTBody( "Here is the text version of the mail." );
$mail->addHTMLImage( "file://C:/workspace/ezc/test.jpg", "image/jpeg" );
$mail->addAttachment( __FILE__ );
$hdr = array( "From" => 'null@example.com <Björn Dieding>',
  "Subject" => "[PEAR] Example of an HTML email with attachments" );        

$transport = Mail::factory( "smtp", array( 'host' => "192.168.0.252" ) );
$transport->send( "bjoern@xrow.de", $mail->headers( $hdr ), $mail->get() );        

?>

Bugs in ezc Mail State beta Version beta2

  • From Field: Umlaute werden nicht encoded. Heute reported und confirmed. Bugifx kommt nächste Woche.
  • Problem mit Linefeed bei einigen SMTP Servern(QMAIL?).

Bugs in PEAR Paket Mail_Mime State stable Version 1.3.1

  • Email kommt komplett zerstört in Outlook an. Unlesbar Ich bin entsetzt. Mailserver war Exchange.
  • 4 x die Warnung "Only variable references should be returned by reference"

Resourcen

Verwandter Inhalt

Kommentare

Bitte melden Sie sich Logan oder registrieren Sie sich um kommentieren zu können.

Login

Passwort vergessen?