• Like
  • Save
ZF2: Writing Service Components
Upcoming SlideShare
Loading in...5

ZF2: Writing Service Components



Writing Service Components for Zend Framework 2.

Writing Service Components for Zend Framework 2.



Total Views
Views on SlideShare
Embed Views



1 Embed 1

http://tweetedtimes.com 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    ZF2: Writing Service Components ZF2: Writing Service Components Presentation Transcript

    • ZF2: WritingService ComponentsMike Willbanks | Barnes & NobleZend Webinar: Thursday, May 2nd 2013
    • 2Housekeeping…•  Me Sr. Web Architect Manager at NOOK Developer Open Source Contributor Where you can find me:•  Twitter: mwillbanks G+: Mike Willbanks•  IRC (freenode): mwillbanks Blog: http://blog.digitalstruct.com•  GitHub: https://github.com/mwillbanks
    • 3Agenda• Background• ZF2 Service Components• Writing a Service Component• Incorporating your Service Component
    • Background…Why Service Components
    • 5A DefinitionZF 1 contained Zend_Service_* components
    • 6Zend_Service_*Components were included in the coredistribution
    • 7Zend_Service_*Make it easy for people to have it available…
    • 81.11.13 ReleaseCaused several issues
    • 9Started Getting Messy…
    • Service Component OverviewGoals, Lifecycle, and more.
    • 11RFC March 2012 “RFC Service Components”Removal of ZF2 ZendService namespace into a separate namespace(ZendService) and under their own GitHub project.
    • Goals of ZF2 Service Components• Ability to version separately from core framework• Easier to leverage outside of a ZF context• Encourage service providers to further contribute
    • Services for Contribution (Official Services)• Independently versioned• Dependencies on framework versions (2.*, 2.0.*, 2.0.1)• Maintain dependencies by specific packages• Must follow ZF coding standards• Must be unique A service that does the same thing should not already exist!
    • 14Discuss onContributor MailingListCR Team Review Fork RepoBuild ComponentIRC Vote(MeetingAgenda)Publish!The Service Component Lifecycle
    • 15Published ZendService PackagesA published package for ZendService components exist onpackages.zendframework.com.
    • Service Component Maintenance• Must be maintained for the duration of major versions Exceptions must be noted in the ChangeLog Component should only state dependency on minor versions• Maintainers must attempt at all times to keep compatibilitywith the latest version If unable to maintain, actively recruit, if still unable ZF or CR teamwill make a recommendation on the component.
    • Writing a Service ComponentBy example of ZendServiceGoogleGcm
    • General Information• Service Components are really just like framework libraries However, the namespace implies 3rd party integrations. They are also organized like the framework.• Service Components should be reusable for otherdevelopers Write it out based on the API and not just what you need.• Create reasonable dependencies ZendHttp and ZendStdlib being most common.
    • 19Why Not Modules?
    • Why Not Modules?• Modules are more specifically for ZF2 Applications• Service Components are reusable libraries for any codebase.• Base Rule If it involves the MVC; it should more than likely be a module.
    • 21Starting off…The file structure of a Service Component.
    • 22ZendService Components Licensehttps://raw.github.com/zendframework/zf2/master/LICENSE.txt
    • 23Composer StubMain information for your specific library.
    • 24Composer StubEnsure you handle dependencies.
    • Unit Testing• Quick Start Clone an existing Service Component (Currently no skeleton) Copy over files from the tests directory: _autoload.php,Bootstrap.php, phpunit.xml.dist, TestConfiguration.php.dist,TestConfiguration.php.travis• You will need to customize phpunit.xml.dist – Change out the unit test name. TestConfiguration.php.dist – Configure your constants andconfiguration.
    • Unit Testing• Tests should contain proper name spacing ZendServiceTestGoogleGcm• Files you need should be located in an _files directoryinside the test area of your component tests/ZendService/Google/Gcm/_files• Write unit tests like normal!
    • Library Code!• The guts of the library is what most of us are familiar with• Write your library inside of your compliant directory library/ZendService/Google/Gcm• Ensure proper namespacing ZendServiceGoogleGcm• Attempt to follow great naming so that it makes sense!
    • Coding Standards• Remember to make use of the coding standards! Docblocks Import the proper packages from their respective namespaces Read the coding standards doc:• http://framework.zend.com/wiki/display/ZFDEV2/Coding+Standards• Mainly; PSR-0, PSR-1, PSR-2 (there are slight differences)
    • Best Practices• Follow conventions PSR-0/1/2, file locations, options classes• Hard dependencies Use the constructor! Only set dependencies for items you require!• Write Tests Hook into Travis-CI, go for 100% code coverage• Discoverability Put the component on Packagist, submit it for inclusion toZendService.
    • Documentation• The most dreaded part of the job…• All of the documentation is in the “zf2-documentation”project under the “zendframework” github organization. This will likely change for services in the future.• Fork the project• Create a feature branch: feature/service-google-gcm• Write your documentation• Submit a PR
    • 31Documentation is built out of reStructuredTextYes, Docbook has gone away; so fear not!
    • 32Language FilesAlways start with English first aka “en” as it is the default in the eventa translation is missing.
    • 33Modify docs/language/en/index.rst to add in your new serviceHaving a table of contents is a good thing!
    • 34Modify docs/language/en/index.rst to add in your new serviceFollow the convention!
    • 35Write Away!docs/language/en/modules/zendservice.google.gcm.rst or the like
    • 36Seeing your Documentation• Install the proper tools apt-get install python-setuptools python-pygments easy_install -U Sphinx• Enter the docs/ directory• Run: make html
    • 37Your documentation will now be in:docs/_build/htmlReview for errors before sending the PR
    • Integrating your ServiceAdd the module to the composer configurationAdd in potential configurationSetup the service managerFetch it inside of a controller
    • 39Add to your composer.json!Followed by “php composer.phar install”
    • 40Handling ConfigurationLikely in /path/to/zf2app/config/autoload/local.php
    • 41Service Manager SetupCreating a simple factory to get a configured Client.
    • 42Leveraging your Service Factory in a ControllerWe can easily fetch it now when we have a ServiceLocator.
    • Questions?These slides will be posted to SlideShare & SpeakerDeck. SpeakerDeck: http://speakerdeck.com/u/mwillbanks Slideshare: http://www.slideshare.net/mwillbanks Twitter: mwillbanks G+: Mike Willbanks IRC (freenode): mwillbanks Blog: http://blog.digitalstruct.com GitHub: https://github.com/mwillbanks