Top Banner
Stepan Tanasiychuk [email protected] Symfony2. На чём можно сэкономить время при разработке?
27

Symfony2. На чем можно сэкономить время при разработке?

Nov 22, 2014

Download

Documents

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Symfony2. На чем можно сэкономить время при разработке?

Stepan [email protected]

Symfony2. На чём можно сэкономить время при разработке?

Page 2: Symfony2. На чем можно сэкономить время при разработке?

### Нам проще переписать. Оно глюкавое, тормозное, etc.

Это отмазки :)

Глюкавое — покрой тестами.Тормозное — пройдись профайлером, исправь и отправь pull request.

Page 3: Symfony2. На чем можно сэкономить время при разработке?

Да, велосипеды это круто!

Page 4: Symfony2. На чем можно сэкономить время при разработке?

Но готовые решения —экономят время.

Page 5: Symfony2. На чем можно сэкономить время при разработке?

### SonataAdminBundle<parameters> <parameter key="stfalcon_page.admin.page.class"> Stfalcon\Bundle\PageBundle\Admin\PageAdmin </parameter> <parameter key="stfalcon_page.admin.page.entity"> Stfalcon\Bundle\PageBundle\Entity\Page </parameter> <parameter key="stfalcon_page.admin.page.controller"> SonataAdminBundle:CRUD </parameter></parameters>

<services> <service id="stfalcon_page.admin.page" class="%stfalcon_page.admin.page.class%"> <tag name="sonata.admin" manager_type="orm" group="Pages" label="page"/> <argument /> <argument>%stfalcon_page.admin.page.entity%</argument> <argument>%stfalcon_page.admin.page.controller%</argument> </service></services>

Page 6: Symfony2. На чем можно сэкономить время при разработке?

### SonataAdminBundleclass PageAdmin extends Admin { protected function configureListFields(ListMapper $listMapper) { return $listMapper ->addIdentifier('slug') ->add('title'); }

protected function configureFormFields(FormMapper $formMapper) { return $formMapper ->with('General') ->add('slug') ->add('title') ->add('text') ->end(); }}

Page 7: Symfony2. На чем можно сэкономить время при разработке?

### SonataAdminBundle

Page 8: Symfony2. На чем можно сэкономить время при разработке?

### SonataAdminBundleclass PageAdmin extends Admin { protected function configureListFields(ListMapper $listMapper) { return $listMapper ->addIdentifier('slug') ->add('title'); }

protected function configureFormFields(FormMapper $formMapper) { return $formMapper ->with('General') ->add('slug') ->add('title') ->add('text') ->end(); }}

Page 9: Symfony2. На чем можно сэкономить время при разработке?

### SonataAdminBundle

Page 10: Symfony2. На чем можно сэкономить время при разработке?

### SensioFrameworkExtraBundle

/** * @Route("/page/{slug}") * @Template() * @Cache(smaxage="15") */public function showAction(Page $post){ return array('page' => $page);}

Page 11: Symfony2. На чем можно сэкономить время при разработке?

### JMSSecurityExtraBundle

/** * @Secure(roles="ROLE_USER, ROLE_ADMIN") */public function secureAction(){

// ...}

Page 12: Symfony2. На чем можно сэкономить время при разработке?

### AsseticBundle

# config.ymlassetic: use_controller: false filters: yui_css: jar: "%kernel.root_dir%/yuicompressor-2.4.6.jar"

{# layout.html.twig #}{% stylesheets 'css/style.css' filter='yui_css' output="tmp/css/*.css" %} <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />{% endstylesheets %}

Page 13: Symfony2. На чем можно сэкономить время при разработке?

### StofDoctrineExtensionsBundle

* Tree* Translatable* Sluggable* Timestampable* Loggable

Page 14: Symfony2. На чем можно сэкономить время при разработке?

### StofDoctrineExtensionsBundle

/** * @ORM\Entity */class Page{ /** * @var \DateTime $createdAt * * @ORM\Column(name="created_at", type="datetime") * @Gedmo\Timestampable(on="create") */ private $createdAt;

Page 15: Symfony2. На чем можно сэкономить время при разработке?

### DoctrineFixturesBundle

class LoadPageData extends AbstractFixture { public function load($em) { $page = new Page(); $page->setTitle('Contacts'); $page->setSlug('contacts'); $page->setText('[email protected]'); $em->persist($page); $em->flush(); }}

$ php app/console doctrine:fixtures:load

Page 16: Symfony2. На чем можно сэкономить время при разработке?

### DoctrineMigrationsBundle

Page 17: Symfony2. На чем можно сэкономить время при разработке?

### А также:

* FOSUserBundle* FOSCommentBundle* KnpMenuBundle* KnpPaginatorBundle* AvalancheImagineBundle

и другие бандлы =>

Page 18: Symfony2. На чем можно сэкономить время при разработке?

### http://symfony2bundles.org

Page 19: Symfony2. На чем можно сэкономить время при разработке?

### http://symfohub.com/bundles

Page 20: Symfony2. На чем можно сэкономить время при разработке?

Тестирование

Page 21: Symfony2. На чем можно сэкономить время при разработке?

### Тесты не экономят время?

Сравните время на:* Рефакторинг кода* Внедрение новых фич* Полную проверка функционала перед каждым релизомС тестами и без => тесты рулят!

ps. и используйте CI

Page 22: Symfony2. На чем можно сэкономить время при разработке?

### LiipFunctionalTestBundle

* Фикстуры* Сахар (fetchContent, fetchCrawler, getUrl, isSuccessful)* HTML5

Page 23: Symfony2. На чем можно сэкономить время при разработке?

### BehatBundle & MinkBundle

# language: ru

Функционал: Первый тест для AcmeDemoBundle Тестируем реализованные возможности в демонстрационном бандле

Сценарий: Открыть главную страницу в dev окружении и убедиться в ее существовании Допустим я на странице "/app_dev.php" Тогда код ответа сервера должен быть 200 И я должен видеть "Congratulations! You have successfully installed a new Symfony application." И я должен видеть "Welcome!"

Page 24: Symfony2. На чем можно сэкономить время при разработке?

Кодогенерация

Page 25: Symfony2. На чем можно сэкономить время при разработке?

### SensioGeneratorBundle

generate:bundlegenerate:doctrine:crudgenerate:doctrine:entitiesgenerate:doctrine:entitygenerate:doctrine:form

Page 26: Symfony2. На чем можно сэкономить время при разработке?

### Подведем итоги:

* Используйте готовые решения (бандлы)* Пишите тесты* Генерируйте код

И получите профит :)

Page 27: Symfony2. На чем можно сэкономить время при разработке?

### Благодарю за внимание ;)

Готов ответить на вопросы

Stepan [email protected]@stfalconhttp://github.com/stfalcon