PHP+SQL 6. YAML (Yet Another Markup Language / YAML Ain't Markup Language) ORM (Object-Relational Mapper) OE NIK, 2013
PHP+SQL 6. YAML ORM OE NIK, 2013
Main feature: indentation YAML 1.2 is a superset of JSON „YAML is a human friendly data serialization standard for all programming languages” Main feature: indentation YAML 1.2 is a superset of JSON Less popular than JSON/XML, but it is used in some projects ROS: message and service descriptors Symfony: configuration A kép a PPT gyakorlatból származik © Szénási Sándor OE NIK, 2013
config.yml (excerpt) # separated config_dev.yml and config_prod.yml imports: - { resource: parameters.yml } - { resource: security.yml } - { resource: services.yml } [...] doctrine: dbal: driver: pdo_mysql host: "%database_host%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: UTF8 OE NIK, 2013
config.yml (excerpt) framework: secret: "%secret%“ router: resource: "%kernel.root_dir%/config/routing.yml" strict_requirements: ~ form: ~ csrf_protection: ~ validation: { enable_annotations: true } templating: engines: ['twig'] session: handler_id: session.handler.native_file save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" assets: ~ php_errors: log: true OE NIK, 2013
routing.yml, parameters.yml app: resource: "@AppBundle/Controller/" type: annotation parameters: database_host: 127.0.0.1 database_port: null database_name: symfony database_user: root database_password: null mailer_transport: smtp mailer_host: 127.0.0.1 mailer_user: null mailer_password: null secret: 90b1369cb9c394850af998b3776090435216f8da A kép a PPT gyakorlatból származik © Szénási Sándor OE NIK, 2013
PHP+SQL 6. YAML ORM OE NIK, 2013
PDO OE NIK, 2013
ORM C#: Entity Framework, Java: Hibernate/JPA Python: Django ORM, SQLAlchemy Ruby on Rails PHP: Eloquent, Propel, Doctrine OE NIK, 2013
Active Record / Data Mapper OE NIK, 2013
Doctrine ORM layers Data mapper with lazy loading capabilities PDO: SQL data access (commands, results, parameters) DBAL: Dialect-independent data access Could be used independently in a project ORM: The impression of working with an in-memory data structure represented as an object graph Query-less application DQL, if needed DB/Class mapping via YAML (or annotations) OE NIK, 2013
config.yml, services.yml parameters: pageprefix: mycars services: app.tblprefix_subscriber: class: AppBundle\Event\TablePrefixSubscriber arguments: [ "%pageprefix%" ] tags: - { name: doctrine.event_subscriber } OE NIK, 2013
Installation / usage Doctrine: installed in symfony by default Data fixtures: composer require --dev doctrine/doctrine-fixtures-bundle doctrine:generate:entities AppBundle/Entity/XXX doctrine:schema:drop --force doctrine:database:create doctrine:schema:update --force doctrine:fixtures:load --no-interaction cache:clear OE NIK, 2013
OE NIK, 2013
OE NIK, 2013