create your own composer package
TRANSCRIPT
Create your own composer package
Why• Easy to manage dependencies
• Easy to use with 3rd party library
normally `require`
<?php
require_once ‘pantip/pantip.class.php’; require_once ‘twitter/twitter.class.php’; require_once ‘facebook/facebook.class.php’; require_once ‘instagram/instagram.class.php’;
the composer way
<?php
require_once ‘vendor/autoload.php’;
Create Package$ composer init
// composer.json
{ "name": “clozed2u/hello-composer", "authors": [ { "name": "Lattapon Yodsuwan", "email": "[email protected]" } ], "require": {} }
Directory Structure
hello-composer | |__src | |__Hello.php | |__tests | |__HelloTest.php | |__composer.json | |__optional(circle.yml, .travis.yml, phpunit.xml)
Hello class
<?php
namespace Hello;
class Hello { public function sayAnything($message) { return $message; } }
Hello Tests<?php
use \Hello\Hello;
class HelloTest extends PHPUnit_Framework_TestCase { public function testSayAnything() { $said = new Hello(); $this->assertEquals(
"X JAPAN ROCK!!”, $said->sayAnything("X JAPAN ROCK!!”) );
} }
Add autoload to composer// composer.json
{ …,
"require-dev": { "phpunit/phpunit": "*" }, "autoload": { "psr-4": {"Hello\\": "src/"} } }
Push to git and release
Use package
$ composer install
// composer.json
{ "repositories": [ { "type": "vcs", "url": "https://github.com/clozed2u/hello-composer.git" } ], "require": { "clozed2u/hello-composer": "1.0.0" } }
Push to packagist.org
$ composer require clozed2u/hello-composer
Don’t forget continuous integration
/clozed2u/hello-composer
We are hiring