SlideShare une entreprise Scribd logo
1  sur  32
Dependency          PHP
Management    Zend Framework 2




             Kirill chEbba Chebunin
                      Creara
Actual PHP Problems
    
        Code Quality
         −   Design Patterns
    
        Standards
         −   PSR
    
        Complete Solutions
         −   Libraries
         −   Modules, Bundles, Plugins
         −   Tools


ZFConf 2012 (c) Kirill chEbba Chebunin
Dependency Management




ZFConf 2012 (c) Kirill chEbba Chebunin
The Problem




ZFConf 2012 (c) Kirill chEbba Chebunin
The Problem




ZFConf 2012 (c) Kirill chEbba Chebunin
The Problem




ZFConf 2012 (c) Kirill chEbba Chebunin
Solutions
    
        Python: easy_install, pip
    
        Ruby: gems
    
        Java: maven, ivy
    
        C#(.NET): NuGet, NuPack
    
        PHP: PEAR/Pyrus




ZFConf 2012 (c) Kirill chEbba Chebunin
Solutions. PHP Frameworks
    
        Symfony2
         −   Git Submodules
         −   bin/vendors
         −   Composer
    
        Zend Framework2
         −   Pyrus
         −   Modules?




ZFConf 2012 (c) Kirill chEbba Chebunin
Composer




ZFConf 2012 (c) Kirill chEbba Chebunin
Composer
    
        PEAR. Why NOT?
    
        Composer. Why?
         −   Created for Dependency management
         −   Separate storage & Package metadata
         −   Support existing infrastructure
         −   Dist & Source
         −   Extendable
         −   Autoload Support



ZFConf 2012 (c) Kirill chEbba Chebunin
Composer. Architecture
    
        Package
    
        Repository – package meta data
         −    Composer, Pear, VCS, etc
    
        Downloader
         −   Archive, VCS, Pear
    
        Installer
         −   Library, Project
    
        Autoload
         −   PSR-0, ClassMap
ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Pear

 composer.json

 "repositories": [
   {
     "type": "pear",
     "url": "http://packages.zendframework.com"
   }
 ]




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Pear
         "require": {
           "php": ">=5.3.2",
           "pear-zf2/Zend_Mvc":            "2.0.0beta3",
           "pear-zf2/Zend_Di":             "2.0.0beta3",
           "pear-zf2/Zend_Code":           "2.0.0beta3",
           "pear-zf2/Zend_Config":         "2.0.0beta3",
           "pear-zf2/Zend_EventManager":   "2.0.0beta3",
           "pear-zf2/Zend_Filter":         "2.0.0beta3",
           "pear-zf2/Zend_Http":           "2.0.0beta3",
           "pear-zf2/Zend_Loader":         "2.0.0beta3",
           "pear-zf2/Zend_Module":         "2.0.0beta3",
           "pear-zf2/Zend_Registry":       "2.0.0beta3",
           "pear-zf2/Zend_Stdlib":         "2.0.0beta3",
           "pear-zf2/Zend_Uri":            "2.0.0beta3",
           "pear-zf2/Zend_Validator":      "2.0.0beta3",
           "pear-zf2/Zend_View":           "2.0.0beta3"
         }

ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Pear

 public/index.php

 //require_once
 //(getenv('ZF2_PATH') ?: 'vendor/ZendFramework/library')
 //    .'/Zend/Loader/AutoloaderFactory.php';
 //ZendLoaderAutoloaderFactory::factory();

 require_once 'vendor/.composer/autoload.php';




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Pear




 /path/to/project$ composer install




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Pear




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Pear

    Problems:
    
        Missed dependencies in zf2 channel
    
        Missed versions in zf2 channel
    
        No package groups support in Composer
    Zend_Framework#Standard




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Composer

composer.json

"repositories": [
  {
    "type": "composer",
    "url":
  "https://raw.github.com/chEbba/Zf2Composer/master"
  }
]




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Composer

         "require": {
           "php": ">=5.3.2",
           "pear-zf2/Zend_Mvc":            "2.0.0beta3",
           "pear-zf2/Zend_EventManager":   "2.0.0beta3",
           "pear-zf2/Zend_Module":         "2.0.0beta3",
           "pear-zf2/Zend_View":           "2.0.0beta3"
         }




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Composer




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Module




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Module

composer.json

  "name": "zendframework/zend-developer-tools",
  "description": "ZF2 module for developer and debug tools.",
  "keywords": ["zend", "zf", "module", "developer", "tools"],
  "homepage":
 "https://github.com/zendframework/ZendDeveloperTools",
  "type": "library",
  "license": "New BSD License",
  "authors": [
      {
          "name": "Zend Technologies USA",
          "email": "info@zendframework.com",
          "homepage": "http://zendframework.com"
      }
  ],


ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Module

composer.json

  "name": "zendframework/zend-developer-tools",
  "description": "ZF2 module for developer and debug tools.",
  "keywords": ["zend", "zf", "module", "developer", "tools"],
  "homepage":
 "https://github.com/zendframework/ZendDeveloperTools",
  "type": "library",
  "license": "New BSD License",
  "authors": [
      {
          "name": "Zend Technologies USA",
          "email": "info@zendframework.com",
          "homepage": "http://zendframework.com"
      }
  ],


ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Module

   "version": "1.0.0-pr1",

   "require":{
       "php":">=5.3.2",
       "pear-zf2/zend_mvc":              "2.0.0beta3",
       "pear-zf2/zend_eventmanager":     "2.0.0beta3",
       "pear-zf2/zend_http":             "2.0.0beta3",
       "pear-zf2/zend_stdlib":           "2.0.0beta3",
       "pear-zf2/zend_view":             "2.0.0beta3"
   },

   "autoload":{
       "classmap":[""]
   }




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Module
http://packagist.org/packages/submit




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Module

composer.json

"require": {
  "php": ">=5.3.2",
  "pear-zf2/Zend_Mvc":                   "2.0.0beta3",
  "pear-zf2/Zend_EventManager":          "2.0.0beta3",
  "pear-zf2/Zend_Module":                "2.0.0beta3",
  "pear-zf2/Zend_View":                  "2.0.0beta3",

    "zendframework/zend_developer_tools": "1.0.0-alpha1"
}




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Module

application.config.php


         'modules' => array(
                  'Application',
                  'ZendDeveloperTools'
         )




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Pear




 /path/to/project$ composer update




ZFConf 2012 (c) Kirill chEbba Chebunin
ZF2 + Composer. Composer




ZFConf 2012 (c) Kirill chEbba Chebunin
Links

  
      https://github.com/chEbba/Zf2Composer/
  
      https://github.com/zendframework/ZendSkeletonApplication/
  
      https://github.com/zendframework/ZendDeveloperTools/
  
      https://github.com/stefankleff/ZendDeveloperTools/
  
      http://getcomposer.org/
  
      http://packagist.org/
  
      http://packages.zendframework.com/
  
      http://modules.zendframework.com/




ZFConf 2012 (c) Kirill chEbba Chebunin
Questions?

                                              Use Complete Solutions,
                                                     BITCH!


                                             Github: chEbba

                                             Twitter: @iamchEbba

                                             Mail: iam@chebba.org

                          Made by Coyl




ZFConf 2012 (c) Kirill chEbba Chebunin

Contenu connexe

Tendances

Composer: putting dependencies on the score
Composer: putting dependencies on the scoreComposer: putting dependencies on the score
Composer: putting dependencies on the scoreRafael Dohms
 
Composer the right way - SunshinePHP
Composer the right way - SunshinePHPComposer the right way - SunshinePHP
Composer the right way - SunshinePHPRafael Dohms
 
Composer, putting dependencies on the score
Composer, putting dependencies on the scoreComposer, putting dependencies on the score
Composer, putting dependencies on the scoreRafael Dohms
 
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)James Titcumb
 
Information security programming in ruby
Information security programming in rubyInformation security programming in ruby
Information security programming in rubyHiroshi Nakamura
 
Zend Framework 1.8 workshop
Zend Framework 1.8 workshopZend Framework 1.8 workshop
Zend Framework 1.8 workshopNick Belhomme
 
Zend\Expressive - höher, schneller, weiter
Zend\Expressive - höher, schneller, weiterZend\Expressive - höher, schneller, weiter
Zend\Expressive - höher, schneller, weiterRalf Eggert
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)James Titcumb
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterZendCon
 
Vagrant move over, here is Docker
Vagrant move over, here is DockerVagrant move over, here is Docker
Vagrant move over, here is DockerNick Belhomme
 
Quick start on Zend Framework 2
Quick start on Zend Framework 2Quick start on Zend Framework 2
Quick start on Zend Framework 2Enrico Zimuel
 
Mastering Namespaces in PHP
Mastering Namespaces in PHPMastering Namespaces in PHP
Mastering Namespaces in PHPNick Belhomme
 
Laravel 4 package development
Laravel 4 package developmentLaravel 4 package development
Laravel 4 package developmentTihomir Opačić
 
Zend Framework 2 - Basic Components
Zend Framework 2  - Basic ComponentsZend Framework 2  - Basic Components
Zend Framework 2 - Basic ComponentsMateusz Tymek
 
Gearman work queue in php
Gearman work queue in phpGearman work queue in php
Gearman work queue in phpBo-Yi Wu
 
Gradle in a Polyglot World
Gradle in a Polyglot WorldGradle in a Polyglot World
Gradle in a Polyglot WorldSchalk Cronjé
 
Infrastructure as code - Python Saati #36
Infrastructure as code - Python Saati #36Infrastructure as code - Python Saati #36
Infrastructure as code - Python Saati #36Halil Kaya
 
Bringing modern PHP development to IBM i (ZendCon 2016)
Bringing modern PHP development to IBM i (ZendCon 2016)Bringing modern PHP development to IBM i (ZendCon 2016)
Bringing modern PHP development to IBM i (ZendCon 2016)James Titcumb
 
Crafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in RubyCrafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in RubyNikhil Mungel
 
Dependency management with Composer
Dependency management with ComposerDependency management with Composer
Dependency management with ComposerJason Grimes
 

Tendances (20)

Composer: putting dependencies on the score
Composer: putting dependencies on the scoreComposer: putting dependencies on the score
Composer: putting dependencies on the score
 
Composer the right way - SunshinePHP
Composer the right way - SunshinePHPComposer the right way - SunshinePHP
Composer the right way - SunshinePHP
 
Composer, putting dependencies on the score
Composer, putting dependencies on the scoreComposer, putting dependencies on the score
Composer, putting dependencies on the score
 
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
 
Information security programming in ruby
Information security programming in rubyInformation security programming in ruby
Information security programming in ruby
 
Zend Framework 1.8 workshop
Zend Framework 1.8 workshopZend Framework 1.8 workshop
Zend Framework 1.8 workshop
 
Zend\Expressive - höher, schneller, weiter
Zend\Expressive - höher, schneller, weiterZend\Expressive - höher, schneller, weiter
Zend\Expressive - höher, schneller, weiter
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life better
 
Vagrant move over, here is Docker
Vagrant move over, here is DockerVagrant move over, here is Docker
Vagrant move over, here is Docker
 
Quick start on Zend Framework 2
Quick start on Zend Framework 2Quick start on Zend Framework 2
Quick start on Zend Framework 2
 
Mastering Namespaces in PHP
Mastering Namespaces in PHPMastering Namespaces in PHP
Mastering Namespaces in PHP
 
Laravel 4 package development
Laravel 4 package developmentLaravel 4 package development
Laravel 4 package development
 
Zend Framework 2 - Basic Components
Zend Framework 2  - Basic ComponentsZend Framework 2  - Basic Components
Zend Framework 2 - Basic Components
 
Gearman work queue in php
Gearman work queue in phpGearman work queue in php
Gearman work queue in php
 
Gradle in a Polyglot World
Gradle in a Polyglot WorldGradle in a Polyglot World
Gradle in a Polyglot World
 
Infrastructure as code - Python Saati #36
Infrastructure as code - Python Saati #36Infrastructure as code - Python Saati #36
Infrastructure as code - Python Saati #36
 
Bringing modern PHP development to IBM i (ZendCon 2016)
Bringing modern PHP development to IBM i (ZendCon 2016)Bringing modern PHP development to IBM i (ZendCon 2016)
Bringing modern PHP development to IBM i (ZendCon 2016)
 
Crafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in RubyCrafting Beautiful CLI Applications in Ruby
Crafting Beautiful CLI Applications in Ruby
 
Dependency management with Composer
Dependency management with ComposerDependency management with Composer
Dependency management with Composer
 

En vedette

ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)ZFConf Conference
 
Zend四十八手シリーズ Zend_Cache Zend_Paginator
Zend四十八手シリーズ Zend_Cache Zend_PaginatorZend四十八手シリーズ Zend_Cache Zend_Paginator
Zend四十八手シリーズ Zend_Cache Zend_PaginatorYusuke Ando
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniterYuya Matsushima
 
PHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件についてPHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件について健治郎 安井
 
Yet another use of Phalcon
Yet another use of PhalconYet another use of Phalcon
Yet another use of PhalconYuji Iwai
 
3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISP3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISPYamaYamamoto
 
Phalcon勉強会資料
Phalcon勉強会資料Phalcon勉強会資料
Phalcon勉強会資料Yuji Otani
 
Phalcon + AngularJSで作る動画プラットフォーム
Phalcon + AngularJSで作る動画プラットフォームPhalcon + AngularJSで作る動画プラットフォーム
Phalcon + AngularJSで作る動画プラットフォームryo-utsunomiya
 
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaHidenori Goto
 
PHPUnitでリファクタリング
PHPUnitでリファクタリングPHPUnitでリファクタリング
PHPUnitでリファクタリングTakako Miyagawa
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにAtsuhiro Kubo
 
Codeigniter3フレームアップデート
Codeigniter3フレームアップデートCodeigniter3フレームアップデート
Codeigniter3フレームアップデートtomohiro kitaura
 
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントCode igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントnoldor
 
Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法Koji Iwazaki
 

En vedette (17)

ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
ZFConf 2012: Zend Framework 2, a quick start (Enrico Zimuel)
 
Zend四十八手シリーズ Zend_Cache Zend_Paginator
Zend四十八手シリーズ Zend_Cache Zend_PaginatorZend四十八手シリーズ Zend_Cache Zend_Paginator
Zend四十八手シリーズ Zend_Cache Zend_Paginator
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
PHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件についてPHP buildpackでhackとphalconが動いた件について
PHP buildpackでhackとphalconが動いた件について
 
Yet another use of Phalcon
Yet another use of PhalconYet another use of Phalcon
Yet another use of Phalcon
 
PHP勉強会 #51
PHP勉強会 #51PHP勉強会 #51
PHP勉強会 #51
 
受託開発のPhalcon
受託開発のPhalcon受託開発のPhalcon
受託開発のPhalcon
 
3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISP3流プログラマーから見たPhalconとWISP
3流プログラマーから見たPhalconとWISP
 
Phalcon勉強会資料
Phalcon勉強会資料Phalcon勉強会資料
Phalcon勉強会資料
 
Phalcon + AngularJSで作る動画プラットフォーム
Phalcon + AngularJSで作る動画プラットフォームPhalcon + AngularJSで作る動画プラットフォーム
Phalcon + AngularJSで作る動画プラットフォーム
 
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
 
PHPUnitでリファクタリング
PHPUnitでリファクタリングPHPUnitでリファクタリング
PHPUnitでリファクタリング
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るために
 
Codeigniter3フレームアップデート
Codeigniter3フレームアップデートCodeigniter3フレームアップデート
Codeigniter3フレームアップデート
 
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントCode igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
 
Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法Symfony2でMongoDBと仲良くする方法
Symfony2でMongoDBと仲良くする方法
 

Similaire à Dependency management in PHP & ZendFramework 2

Howto Create & Run zf2skeleton Apps with PHP's Built-in Webserver
Howto Create & Run zf2skeleton Apps with PHP's Built-in WebserverHowto Create & Run zf2skeleton Apps with PHP's Built-in Webserver
Howto Create & Run zf2skeleton Apps with PHP's Built-in WebserverMaster Zend Framework
 
Composer for busy developers - DPC13
Composer for busy developers - DPC13Composer for busy developers - DPC13
Composer for busy developers - DPC13Rafael Dohms
 
Puppet at Opera Sofware - PuppetCamp Oslo 2013
Puppet at Opera Sofware - PuppetCamp Oslo 2013Puppet at Opera Sofware - PuppetCamp Oslo 2013
Puppet at Opera Sofware - PuppetCamp Oslo 2013Cosimo Streppone
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Fabrice Bernhard
 
Infrastructure as code
Infrastructure as codeInfrastructure as code
Infrastructure as codedaisuke awaji
 
Inside Zend Framework
Inside Zend FrameworkInside Zend Framework
Inside Zend FrameworkWeng Wei
 
DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)Soshi Nemoto
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014biicode
 
An Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating SystemAn Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating SystemLinaro
 
Gitlab and Lingvokot
Gitlab and LingvokotGitlab and Lingvokot
Gitlab and LingvokotLingvokot
 
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmetHow Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmetDevOpsDaysJKT
 
Rust & Python : Python WA October meetup
Rust & Python : Python WA October meetupRust & Python : Python WA October meetup
Rust & Python : Python WA October meetupJohn Vandenberg
 
Zend Framework 2 quick start
Zend Framework 2 quick startZend Framework 2 quick start
Zend Framework 2 quick startEnrico Zimuel
 
XPDDS18: A dive into kbuild - Cao jin, Fujitsu
XPDDS18: A dive into kbuild - Cao jin, FujitsuXPDDS18: A dive into kbuild - Cao jin, Fujitsu
XPDDS18: A dive into kbuild - Cao jin, FujitsuThe Linux Foundation
 
Gerrit linuxtag2011
Gerrit linuxtag2011Gerrit linuxtag2011
Gerrit linuxtag2011thkoch
 
Kubernetes on Bare Metal at the Kitchener-Waterloo Kubernetes and Cloud Nativ...
Kubernetes on Bare Metal at the Kitchener-Waterloo Kubernetes and Cloud Nativ...Kubernetes on Bare Metal at the Kitchener-Waterloo Kubernetes and Cloud Nativ...
Kubernetes on Bare Metal at the Kitchener-Waterloo Kubernetes and Cloud Nativ...CloudOps2005
 

Similaire à Dependency management in PHP & ZendFramework 2 (20)

Howto Create & Run zf2skeleton Apps with PHP's Built-in Webserver
Howto Create & Run zf2skeleton Apps with PHP's Built-in WebserverHowto Create & Run zf2skeleton Apps with PHP's Built-in Webserver
Howto Create & Run zf2skeleton Apps with PHP's Built-in Webserver
 
Composer for busy developers - DPC13
Composer for busy developers - DPC13Composer for busy developers - DPC13
Composer for busy developers - DPC13
 
Ender
EnderEnder
Ender
 
Composer
ComposerComposer
Composer
 
빈스톡 첫인상 with Git
빈스톡 첫인상 with Git빈스톡 첫인상 with Git
빈스톡 첫인상 with Git
 
Puppet at Opera Sofware - PuppetCamp Oslo 2013
Puppet at Opera Sofware - PuppetCamp Oslo 2013Puppet at Opera Sofware - PuppetCamp Oslo 2013
Puppet at Opera Sofware - PuppetCamp Oslo 2013
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
 
Infrastructure as code
Infrastructure as codeInfrastructure as code
Infrastructure as code
 
Inside Zend Framework
Inside Zend FrameworkInside Zend Framework
Inside Zend Framework
 
DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
An Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating SystemAn Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating System
 
Gitlab and Lingvokot
Gitlab and LingvokotGitlab and Lingvokot
Gitlab and Lingvokot
 
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmetHow Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
 
Rust & Python : Python WA October meetup
Rust & Python : Python WA October meetupRust & Python : Python WA October meetup
Rust & Python : Python WA October meetup
 
Zend Framework 2 quick start
Zend Framework 2 quick startZend Framework 2 quick start
Zend Framework 2 quick start
 
ZF2 Presentation @PHP Tour 2011 in Lille
ZF2 Presentation @PHP Tour 2011 in LilleZF2 Presentation @PHP Tour 2011 in Lille
ZF2 Presentation @PHP Tour 2011 in Lille
 
XPDDS18: A dive into kbuild - Cao jin, Fujitsu
XPDDS18: A dive into kbuild - Cao jin, FujitsuXPDDS18: A dive into kbuild - Cao jin, Fujitsu
XPDDS18: A dive into kbuild - Cao jin, Fujitsu
 
Gerrit linuxtag2011
Gerrit linuxtag2011Gerrit linuxtag2011
Gerrit linuxtag2011
 
Kubernetes on Bare Metal at the Kitchener-Waterloo Kubernetes and Cloud Nativ...
Kubernetes on Bare Metal at the Kitchener-Waterloo Kubernetes and Cloud Nativ...Kubernetes on Bare Metal at the Kitchener-Waterloo Kubernetes and Cloud Nativ...
Kubernetes on Bare Metal at the Kitchener-Waterloo Kubernetes and Cloud Nativ...
 

Dernier

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 

Dernier (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 

Dependency management in PHP & ZendFramework 2

  • 1. Dependency PHP Management Zend Framework 2 Kirill chEbba Chebunin Creara
  • 2. Actual PHP Problems  Code Quality − Design Patterns  Standards − PSR  Complete Solutions − Libraries − Modules, Bundles, Plugins − Tools ZFConf 2012 (c) Kirill chEbba Chebunin
  • 3. Dependency Management ZFConf 2012 (c) Kirill chEbba Chebunin
  • 4. The Problem ZFConf 2012 (c) Kirill chEbba Chebunin
  • 5. The Problem ZFConf 2012 (c) Kirill chEbba Chebunin
  • 6. The Problem ZFConf 2012 (c) Kirill chEbba Chebunin
  • 7. Solutions  Python: easy_install, pip  Ruby: gems  Java: maven, ivy  C#(.NET): NuGet, NuPack  PHP: PEAR/Pyrus ZFConf 2012 (c) Kirill chEbba Chebunin
  • 8. Solutions. PHP Frameworks  Symfony2 − Git Submodules − bin/vendors − Composer  Zend Framework2 − Pyrus − Modules? ZFConf 2012 (c) Kirill chEbba Chebunin
  • 9. Composer ZFConf 2012 (c) Kirill chEbba Chebunin
  • 10. Composer  PEAR. Why NOT?  Composer. Why? − Created for Dependency management − Separate storage & Package metadata − Support existing infrastructure − Dist & Source − Extendable − Autoload Support ZFConf 2012 (c) Kirill chEbba Chebunin
  • 11. Composer. Architecture  Package  Repository – package meta data − Composer, Pear, VCS, etc  Downloader − Archive, VCS, Pear  Installer − Library, Project  Autoload − PSR-0, ClassMap ZFConf 2012 (c) Kirill chEbba Chebunin
  • 12. ZF2 + Composer ZFConf 2012 (c) Kirill chEbba Chebunin
  • 13. ZF2 + Composer. Pear composer.json "repositories": [ { "type": "pear", "url": "http://packages.zendframework.com" } ] ZFConf 2012 (c) Kirill chEbba Chebunin
  • 14. ZF2 + Composer. Pear "require": { "php": ">=5.3.2", "pear-zf2/Zend_Mvc": "2.0.0beta3", "pear-zf2/Zend_Di": "2.0.0beta3", "pear-zf2/Zend_Code": "2.0.0beta3", "pear-zf2/Zend_Config": "2.0.0beta3", "pear-zf2/Zend_EventManager": "2.0.0beta3", "pear-zf2/Zend_Filter": "2.0.0beta3", "pear-zf2/Zend_Http": "2.0.0beta3", "pear-zf2/Zend_Loader": "2.0.0beta3", "pear-zf2/Zend_Module": "2.0.0beta3", "pear-zf2/Zend_Registry": "2.0.0beta3", "pear-zf2/Zend_Stdlib": "2.0.0beta3", "pear-zf2/Zend_Uri": "2.0.0beta3", "pear-zf2/Zend_Validator": "2.0.0beta3", "pear-zf2/Zend_View": "2.0.0beta3" } ZFConf 2012 (c) Kirill chEbba Chebunin
  • 15. ZF2 + Composer. Pear public/index.php //require_once //(getenv('ZF2_PATH') ?: 'vendor/ZendFramework/library') // .'/Zend/Loader/AutoloaderFactory.php'; //ZendLoaderAutoloaderFactory::factory(); require_once 'vendor/.composer/autoload.php'; ZFConf 2012 (c) Kirill chEbba Chebunin
  • 16. ZF2 + Composer. Pear /path/to/project$ composer install ZFConf 2012 (c) Kirill chEbba Chebunin
  • 17. ZF2 + Composer. Pear ZFConf 2012 (c) Kirill chEbba Chebunin
  • 18. ZF2 + Composer. Pear Problems:  Missed dependencies in zf2 channel  Missed versions in zf2 channel  No package groups support in Composer Zend_Framework#Standard ZFConf 2012 (c) Kirill chEbba Chebunin
  • 19. ZF2 + Composer. Composer composer.json "repositories": [ { "type": "composer", "url": "https://raw.github.com/chEbba/Zf2Composer/master" } ] ZFConf 2012 (c) Kirill chEbba Chebunin
  • 20. ZF2 + Composer. Composer "require": { "php": ">=5.3.2", "pear-zf2/Zend_Mvc": "2.0.0beta3", "pear-zf2/Zend_EventManager": "2.0.0beta3", "pear-zf2/Zend_Module": "2.0.0beta3", "pear-zf2/Zend_View": "2.0.0beta3" } ZFConf 2012 (c) Kirill chEbba Chebunin
  • 21. ZF2 + Composer. Composer ZFConf 2012 (c) Kirill chEbba Chebunin
  • 22. ZF2 + Composer. Module ZFConf 2012 (c) Kirill chEbba Chebunin
  • 23. ZF2 + Composer. Module composer.json "name": "zendframework/zend-developer-tools", "description": "ZF2 module for developer and debug tools.", "keywords": ["zend", "zf", "module", "developer", "tools"], "homepage": "https://github.com/zendframework/ZendDeveloperTools", "type": "library", "license": "New BSD License", "authors": [ { "name": "Zend Technologies USA", "email": "info@zendframework.com", "homepage": "http://zendframework.com" } ], ZFConf 2012 (c) Kirill chEbba Chebunin
  • 24. ZF2 + Composer. Module composer.json "name": "zendframework/zend-developer-tools", "description": "ZF2 module for developer and debug tools.", "keywords": ["zend", "zf", "module", "developer", "tools"], "homepage": "https://github.com/zendframework/ZendDeveloperTools", "type": "library", "license": "New BSD License", "authors": [ { "name": "Zend Technologies USA", "email": "info@zendframework.com", "homepage": "http://zendframework.com" } ], ZFConf 2012 (c) Kirill chEbba Chebunin
  • 25. ZF2 + Composer. Module "version": "1.0.0-pr1", "require":{ "php":">=5.3.2", "pear-zf2/zend_mvc": "2.0.0beta3", "pear-zf2/zend_eventmanager": "2.0.0beta3", "pear-zf2/zend_http": "2.0.0beta3", "pear-zf2/zend_stdlib": "2.0.0beta3", "pear-zf2/zend_view": "2.0.0beta3" }, "autoload":{ "classmap":[""] } ZFConf 2012 (c) Kirill chEbba Chebunin
  • 26. ZF2 + Composer. Module http://packagist.org/packages/submit ZFConf 2012 (c) Kirill chEbba Chebunin
  • 27. ZF2 + Composer. Module composer.json "require": { "php": ">=5.3.2", "pear-zf2/Zend_Mvc": "2.0.0beta3", "pear-zf2/Zend_EventManager": "2.0.0beta3", "pear-zf2/Zend_Module": "2.0.0beta3", "pear-zf2/Zend_View": "2.0.0beta3", "zendframework/zend_developer_tools": "1.0.0-alpha1" } ZFConf 2012 (c) Kirill chEbba Chebunin
  • 28. ZF2 + Composer. Module application.config.php 'modules' => array( 'Application', 'ZendDeveloperTools' ) ZFConf 2012 (c) Kirill chEbba Chebunin
  • 29. ZF2 + Composer. Pear /path/to/project$ composer update ZFConf 2012 (c) Kirill chEbba Chebunin
  • 30. ZF2 + Composer. Composer ZFConf 2012 (c) Kirill chEbba Chebunin
  • 31. Links  https://github.com/chEbba/Zf2Composer/  https://github.com/zendframework/ZendSkeletonApplication/  https://github.com/zendframework/ZendDeveloperTools/  https://github.com/stefankleff/ZendDeveloperTools/  http://getcomposer.org/  http://packagist.org/  http://packages.zendframework.com/  http://modules.zendframework.com/ ZFConf 2012 (c) Kirill chEbba Chebunin
  • 32. Questions? Use Complete Solutions, BITCH! Github: chEbba Twitter: @iamchEbba Mail: iam@chebba.org Made by Coyl ZFConf 2012 (c) Kirill chEbba Chebunin