Things Your Mother Didn't Tell You About Bundle Configurations - Symfony Live London 2012
- 7. app/config.yml
parameters:
global.page_size: 10
gloabl.page_num: 5
global.tracking.key: ASFDIPSADPFIHwer234123QSD
# Various configuration
webservices.timeout: 100
content_check.enabled: true
birthdates.start: 1950 # TODO: Delete after release
logging.registrations: true
# Tracking Bundle Configuration
trackingbundle.user: rebum
trackingbundle.api.version: 1_0
trackingbundle.use_ssl: true # Do not touch this!!!
trackingbundle.track_super_users: false
infobundle.god_mode: true # Ticket 123456234
infobundle.level: 42
# Connection data for some service
some_webservice.url:
some_webservice.user:
This file was much
http://example.com
api
some_webservice.key: Sdfihwef $5sdf” SAFAWEF
some_webservice.ssl: true loooooonger…
# More configuration
more.config: 100
even.more.config: true
oh_my_option: 123
foo.bar.baz: true
application.lock_user: super
misc.timeout: 300
http.meta.title: super page
http.meta.keywords:
- some
- keywords
- for
- this
- page
http.description: Some crazy description for the homepage that we all love so much
#...
- 8. app/config.yml
parameters:
global.page_size: in
All one context
10
gloabl.page_num: 5
global.tracking.key: ASFDIPSADPFIHwer234123QSD
# Various configuration Correct type?
webservices.timeout: '100'
content_check.enabled: true
birthdates.start: 1950 # TODO: Delete after release
logging.registrations: true
# Tracking Bundle Configuration
trackingbundle.user: rebum Only this bundle?!
trackingbundle.api.version: 1_0
trackingbundle.use_ssl: true # Do not touch this!!!
trackingbundle.track_super_users: false
infobundle.god_mode: true # Ticket 123456234
infobundle.levl: 42
# Connection data for some service
some_webservice.url: http://example.com
some_webservice.user: api Multiple connections?!
Correct key?!
some_webservice.key: Sdfihwef $5sdf” SAFAWEF
some_webservice.ssl: true
- 9. app/config.yml
my_project_tracking:
user: rebum
api_version: 1_0
use_ssl: true # Do not touch this!!!
track_super_users: false
my_project_info:
god_mode: More structure 123456234
true # Ticket
level: 42
my_project_ webservice:
connection:
url: http://example.com
user: api
key: Sdfihwef $5sdf” SAFAWEF
ssl: 'true'
Correct type?!!11one
parameters:
global.page_size: 10
gloabl.page_num: 5
global.tracking.key: ASFDIPSADPFIHwer234123QSD
# ...
- 14. Cache Locate
Config
Validate Load
- 15. Cache Locate
Config
Validate Load
- 16. Locate & Load
http://www.flickr.com/photos/onthespiral/3406281939/
- 22. Cache Locate
Config
Validate Load
- 26. your_bundle:
enabled: true
Validate
Convert
array('enabled' => true);
- 27. Build a Config Tree
http://www.flickr.com/photos/jlscha/6226656013/
- 30. $rootNode Node type Node name
->children()
->booleanNode('enabled')
->defaultFalse()
->end()
->end() More options
;
- 42. ->scalarNode('timeout')
Custom validation
// ... Validation logic
->validate()
->ifTrue(function ($v) {
return !is_int($v);
})
->thenInvalid('No integer')
->end()
->end() Custom error
- 45. connection:
url: http://example.com
user: api
key: $ome35ecre7Ke$
- 47. array('connection' =>
array(
'url' => 'http://example.com',
'user' => 'api',
'key' => '$ome35ecre7Ke$'
)
);
- 48. connections:
default:
url: http://example.com
user: api
key: $ome35ecre7Ke$
fallback:
url: http://back.example.com
user: fallback_api
key: $ome35ecre7Ke$
- 49. ->arrayNode('connections')
Prototype variations
->useAttributeAsKey('name')
->prototype('array')
->children()
->scalarNode('url')
->isRequired()
->end()
->scalarNode('user')->end()
->scalarNode('key')->end()
->end() validation
Prototype
->end()
->requiresAtLeastOneElement()
->end()
- 50. array (
'connections' => array (
'default' => array (
'url' => '...',
'user' => 'api',
'key' => '$ome35ecre7Ke$'
),
'fallback' => array (
'url' => '...',
'user' => 'fallback_api',
'key' => '$ome35ecre7Ke$'
)
));