U()*, C!"p#$r
composer.json
- dependencies
- development dependencies
- config
- metadata
composer.lock
- locks versions of dependencies
Slide 14
Slide 14 text
U()*, C!"p#$r
composer.json
- dependencies
- development dependencies
- config
- metadata
composer.lock
- locks versions of dependencies
- run the same version everywhere
.!"p#$r.+!.2
application: yes
S%!3+1 I )*.+31$ )'?
Slide 40
Slide 40 text
.!"p#$r.+!.2
application: yes
S%!3+1 I )*.+31$ )'?
package: no
Slide 41
Slide 41 text
U()*, D$p$*1$*.)$(
include autoloader
require ‘vendor/autoload.php’;
use packages
$log = new Monolog\Logger(‘name’);
$handler = new Monolog\Handler\StreamHandler(‘app.log’, ...
$log->pushHandler($handler);
$log->addWarning(‘Foo’);
Slide 42
Slide 42 text
U()*, 4$ A3'!+!&1$r
Slide 43
Slide 43 text
U()*, 4$ A3'!+!&1$r
isn’t just for composer packages
Slide 44
Slide 44 text
U()*, 4$ A3'!+!&1$r
isn’t just for composer packages
can load PSR-0 compatible code
Slide 45
Slide 45 text
S)1$b&r: PSR-0
Slide 46
Slide 46 text
S)1$b&r: PSR-0
namespaces match path and filename
Slide 47
Slide 47 text
S)1$b&r: PSR-0
namespaces match path and filename
example:
\Acme\Foo\Bar -> src/Acme/Foo/Bar.php
Slide 48
Slide 48 text
S)1$b&r: PSR-0
namespaces match path and filename
example:
\Acme\Foo\Bar -> src/Acme/Foo/Bar.php
Slide 49
Slide 49 text
U()*, 4$ A3'!+!&1$r
isn’t just for composer packages
can load PSR-0 compatible code
Slide 50
Slide 50 text
U()*, 4$ A3'!+!&1$r
isn’t just for composer packages
can load PSR-0 compatible code
{
“autoload”: {
“psr-0”: { “Acme”: “src/” }
}
}
Slide 51
Slide 51 text
U()*, 4$ A3'!+!&1$r
isn’t just for composer packages
can load PSR-0 compatible code
can also load code that doesn’t follow PSR-0
Slide 52
Slide 52 text
U()*, 4$ A3'!+!&1$r
isn’t just for composer packages
can load PSR-0 compatible code
can also load code that doesn’t follow PSR-0
{
“autoload”: {
“classmap”: [“src/”, “lib/”]
}
}
Slide 53
Slide 53 text
U()*, 4$ A3'!+!&1$r
isn’t just for composer packages
can load PSR-0 compatible code
can also load code that doesn’t follow PSR-0
or individual files (functions file)
Slide 54
Slide 54 text
U()*, 4$ A3'!+!&1$r
isn’t just for composer packages
can load PSR-0 compatible code
can also load code that doesn’t follow PSR-0
or individual files (functions file)
{
“autoload”: {
“files”: [“src/functions.php”]
}
}
Slide 55
Slide 55 text
Cr$&')*, A P&.2&,$
Slide 56
Slide 56 text
Cr$&')*, A P&.2&,$
your application is a package
Slide 57
Slide 57 text
Cr$&')*, A P&.2&,$
your application is a package
not installable by others without metadata
Slide 58
Slide 58 text
Cr$&')*, A P&.2&,$
your application is a package
not installable by others without metadata
needs a name
Slide 59
Slide 59 text
Cr$&')*, A P&.2&,$
your application is a package
not installable by others without metadata
{
“name”: “vendor/name”
}
needs a name
Slide 60
Slide 60 text
Cr$&')*, A P&.2&,$
your application is a package
not installable by others without metadata
version defined in one of three places
needs a name
Slide 61
Slide 61 text
Cr$&')*, A P&.2&,$
your application is a package
not installable by others without metadata
version defined in one of three places
- composer.json (“version” tag)
needs a name
Slide 62
Slide 62 text
Cr$&')*, A P&.2&,$
your application is a package
not installable by others without metadata
{
“version”: “1.0.0”
}
version defined in one of three places
- composer.json (“version” tag)
needs a name
Slide 63
Slide 63 text
Cr$&')*, A P&.2&,$
your application is a package
not installable by others without metadata
version defined in one of three places
- composer.json (“version” tag)
- VCS tag
needs a name
Slide 64
Slide 64 text
Cr$&')*, A P&.2&,$
your application is a package
not installable by others without metadata
version defined in one of three places
- composer.json (“version” tag)
- VCS tag
- 1.0.0
- v1.0.0
- 1.5.0-RC1
- v1.5.0-beta2
needs a name
Slide 65
Slide 65 text
Cr$&')*, A P&.2&,$
your application is a package
not installable by others without metadata
version defined in one of three places
- composer.json (“version” tag)
- VCS tag
- VCS branch
needs a name
Slide 66
Slide 66 text
Cr$&')*, A P&.2&,$
your application is a package
not installable by others without metadata
version defined in one of three places
- composer.json (“version” tag)
- VCS tag
- VCS branch
- {branchname}-dev (2.0 -> 2.0.x-dev)
- dev-{branchname} (dev-master)
needs a name
Slide 67
Slide 67 text
Cr$&')*, A P&.2&,$
Slide 68
Slide 68 text
Cr$&')*, A P&.2&,$
O'%$r M$'&1&'&:
Slide 69
Slide 69 text
Cr$&')*, A P&.2&,$
O'%$r M$'&1&'&:
- description
Slide 70
Slide 70 text
Cr$&')*, A P&.2&,$
O'%$r M$'&1&'&:
- description
- type (library, project, etc)
Slide 71
Slide 71 text
Cr$&')*, A P&.2&,$
O'%$r M$'&1&'&:
- description
- type (library, project, etc)
- keywords (searching on Packagist)
Slide 72
Slide 72 text
Cr$&')*, A P&.2&,$
O'%$r M$'&1&'&:
- description
- type (library, project, etc)
- keywords (searching on Packagist)
- homepage
Slide 73
Slide 73 text
Cr$&')*, A P&.2&,$
O'%$r M$'&1&'&:
- description
- type (library, project, etc)
- keywords (searching on Packagist)
- homepage
- license
Slide 74
Slide 74 text
Cr$&')*, A P&.2&,$
O'%$r M$'&1&'&:
- description
- type (library, project, etc)
- keywords (searching on Packagist)
- homepage
- license
- authors
Slide 75
Slide 75 text
Cr$&')*, A P&.2&,$
O'%$r M$'&1&'&:
- description
- type (library, project, etc)
- keywords (searching on Packagist)
- homepage
- license
- authors
- more at http:/
/getcomposer.org/doc/04-schema.md
Slide 76
Slide 76 text
U()*, C3('!" P&.2&,$(
Slide 77
Slide 77 text
U()*, C3('!" P&.2&,$(
define repository in composer.json
A1v&*.$ C!"p#$r
include binaries in composer
B)*&r)$(
Slide 84
Slide 84 text
A1v&*.$ C!"p#$r
include binaries in composer
B)*&r)$(
{
“bin”: [“bin/script”, ...]
}
Slide 85
Slide 85 text
A1v&*.$ C!"p#$r
include binaries in composer
B)*&r)$(
installs in vendor/bin
Slide 86
Slide 86 text
A1v&*.$ C!"p#$r
include binaries in composer
B)*&r)$(
installs in vendor/bin
S.r)p'(
Slide 87
Slide 87 text
A1v&*.$ C!"p#$r
include binaries in composer
B)*&r)$(
installs in vendor/bin
S.r)p'(
called during composer events
Slide 88
Slide 88 text
A1v&*.$ C!"p#$r
include binaries in composer
B)*&r)$(
installs in vendor/bin
S.r)p'(
called during composer events
php callback or binary
Slide 89
Slide 89 text
A1v&*.$ C!"p#$r
include binaries in composer
B)*&r)$(
installs in vendor/bin
S.r)p'(
called during composer events
php callback or binary
http:/
/getcomposer.org/doc/articles/scripts.md