2. Über mich
● Webentwickler bei code mitte
○ PHP, Javascript
○ Apex & Visualforce
● Jahrelange Erfahrung in Konzeption, Design &
Implementierung von Websites, -Portalen, -Shops,
-Katalogen, -Applikationen, -[...]
● Seit einskommafünf Jahren in der Salesforce-Cloud
3. Force.com Platform
● The good, ...
○ Cloudbasiert: "No Software"
(in the meaning of "to install")
○ Ein unkomplizierter Stack für "alles"
(Ausgabe, Geschäftslogik, Persistenz)
○ Sofort einsatzbereit (theoretisch)
● ... the bad, ...
○ Layout/GUI components, "Rahmenwerk"
○ "Intranet" vs. "Internet", CRM Platform
vs. Website
○ Erst wachsende Erfahrung mit "großen"
Projekten (Test-Fixtures, Deployment <3) Photo: salesforce.com
○ "No Software"?
4. ... the ugly
Abbildung: Cal Evans [https://secure.flickr.com/photos/calevans]
5. PHP
● Bewährte, stabile ● Software! (und HW)
Entwicklungsplattform ● (Fast) keine
● Wartungsarm Standardisierung => SPL
● Kostengünstig vs. JSR
● Geringe ● (Fast) Keine
Entwicklungszeiten Interfaces/Contracts =>
● Verfügbare Experten, Funktionen() vs. API
verfügbares ● Vorsicht vor dem
Expertenwissen Spaghetticode!
● Community ● Nicht "Enterprise"
● "Agil" genug?
6. PHP vs. Apex/VF
● Keine Einschränkungen durch standardisierte GUI-
Components oder das "Salesforce-Layout"
● Beliebige Ausgabe
○ HTML(5), JSON, XML
○ PDF
○ JPEG, PNG, GIF
○ Flash
○ Video
● Nahezu jedes Design kann umgesetzt, jedes Frontend
"bedient" werden
7. Symfony 2
● "Web application framework"
○ lose gekoppelt, komponentenbasiert
○ stabil, testabgedeckt
○ große Community
○ international be- und anerkannt
○ implementiert viele Standards und best practices anderer
Sprachen und Frameworks
● "State-Of-The-Art"
○ PHP 5.3.x
● Reduziert oder verbirgt PHP-Nachteile und
Stolpersteine
Macht die strukturierte, wartbare und effiziente
Entwicklung großer Softwareprojekte auf der PHP-
Plattform möglich (bzw. reduziert gelegentlich dabei auftretende Schmerzen auf ein Minimum)
8. PHP & Force.com
● Force.com-Toolkit für PHP (5.3)
○ via PHP:SOAP
■ Webservice API Partner/Enterprise
■ Custom Webservices
● Das "M" in MVC
○ SOQL-Queries: query(), queryMore(), retrieve(), ...
○ DML-Statements
■ create(), update(), upsert()
■ Prepared Statements!
9. Symfony 2 & Force.com
Mittels zur Laufzeit zugänglichen Metainformationen
("Reflection")
● describeLayout()
● describeSobject()
können Symfony-Formtypes und Validatoren generiert
werden, zum Beispiel
● (HTML 5) Formtypes
○ Date, Datetime, (dependent) Picklist, Email, Phone, Required
fields, minlength, maxlength-Attributes, etc.
● Validators
○ "Contains-Validator" (Picklist)
○ Complex (Custom)-Validator (Address Validation, Serialnumber
validity check)
10. Symfony 2 & Force.com (2)
Vorteile:
● I18n auf der Plattform (Field-Labels)
● Minimaler Pflegeaufwand, bspw. bei Picklist-Values
● "Rapid" form development
● Absolute Flexibilität bei der Weiterverarbeitung der
gesammelten und validierten POST-Daten.
● Einfaches, automatisiertes Rendern ganzer Formulare
auf Basis von describeLayout()-Rastern (foreach row in
rows, foreach col in row, [...])
Nachteilig ist ein gewisser overhead an SOAP-Calls und
Metadaten-Aggregierung.
=> Caching
11. Symfony 2 & Force.com (3)
Wiederverwendbares Symfony-Modul
("CodemitteForceBundle")
● Form-Extensions (type "sfdc_field")
○ Ein Form-Type für "alles"
● Twig-Template-Extensions
○ Form-Helptexts
○ Form-labels werden auf der Force.com Plattform übersetzt, no
need 4 I18n
○ Form-Templates (für bspw. Dependent-Picklists oder Phone-
Type)
● Validation-Extension
○ Still under heavy development
● Pagelayout2Form-Renderer
○ Still under heavy development
12. Und nun ...
... ein kurzer Blick auf das neue,
Force.com & PHP-getriebene Portal
appletini.com
Photo: Sherry Elliott