Урок 1.00:05:50
Introduction
Урок 2.00:02:35
About Symfony
Урок 3.00:02:11
Tools overview
Урок 4.00:06:10
Setting up Vagrant on Windows
Урок 5.00:03:22
Setting up Vagrant on Ubuntu
Урок 6.00:04:09
Setting up Vagrant on MacOS
Урок 7.00:05:05
Running Vagrant and creating a new Symfony 4 project
Урок 8.00:06:23
Symfony project structure overview
Урок 9.00:06:11
About Service Container
Урок 10.00:04:20
Autowiring, Autoconfiguring services
Урок 11.00:05:15
Public, private services, service aliases
Урок 12.00:04:55
Service tags
Урок 13.00:06:02
Manual service wiring, parameter binding
Урок 14.00:12:34
About controllers
Урок 15.00:08:54
About routing
Урок 16.00:10:40
Introduction to views (Twig)
Урок 17.00:07:53
Twig filters & custom Twig extensions
Урок 18.00:06:00
Custom error pages using Twig
Урок 19.00:05:16
Global variables in Twig
Урок 20.00:08:15
Handling assets (JavaScript, CSS) using Symfony Encore (and Webpack)
Урок 21.00:08:36
Installing Bootstrap 4 and compiling assets using Encore (Webpack)
Урок 22.00:11:52
Doctrine introduction
Урок 23.00:07:34
Creating first Entity
Урок 24.00:07:58
Creating a database migration
Урок 25.00:10:32
Basics of doctrine repository
Урок 26.00:06:25
Creating fixtures (database seeding)
Урок 27.00:10:46
Creating a form and handling form submission
Урок 28.00:10:43
Repository find methods and Twig include
Урок 29.00:09:10
Repository findBy, form validation, handling Entity changes
Урок 30.00:05:47
Deleting an Entity and flash messages
Урок 31.00:06:03
Doctrine internals (Entity, EntityManager, Unit of Work, Identity Map)
Урок 32.00:04:43
Security concepts
Урок 33.00:09:47
Security component config and HTTP Basic login
Урок 34.00:08:51
Creating User entity
Урок 35.00:09:44
User Entity fixtures
Урок 36.00:09:42
Login form part 1
Урок 37.00:10:54
Login form part 2
Урок 38.00:06:28
Adding validation to User entity
Урок 39.00:08:20
User registration form
Урок 40.00:11:49
User registration controller
Урок 41.00:13:25
Assigning user to MicroPost (ManyToOne & OneToMany)
Урок 42.00:04:39
Fixtures for relations (using references in fixtures)
Урок 43.00:11:24
Verifying user permissions in Twig (is_granted)
Урок 44.00:05:20
Adding randomness to fixtures
Урок 45.00:03:19
Security Voters introduction
Урок 46.00:11:11
Restricting access to edit or delete a micro post using SecurityVoter
Урок 47.00:11:48
Securing controller actions and templates using Security Voter
Урок 48.00:12:07
Adding an Admin User with all permissions
Урок 49.00:02:28
Security role hierarchy
Урок 50.00:06:07
Restricting adding new posts to registered users (many ways of doing that)
Урок 51.00:09:45
Lazy loading, proxy classes, repository find* methods criteria
Урок 52.00:04:25
Doctrine Lifecycle Callbacks
Урок 53.00:09:03
ManyToMany self-referencing relation (following/followers)
Урок 54.00:07:31
Fetching collections lazily in templates
Урок 55.00:16:59
Follow/Unfollow functionality (controller, adding Entities to Collections)
Урок 56.00:05:41
Follow/Unfollow functionality (security, verifying uniqueness)
Урок 57.00:11:54
Doctrine QueryBuilder - creating queries in OOP manner
Урок 58.00:09:44
ArrayCollection vs PersistentCollection vs Collection
Урок 59.00:12:44
Creating custom query to fetch users with more than 5 posts
Урок 60.00:02:48
More on Doctrine Collections (from the database perspective)
Урок 61.00:00:54
Section introduction
Урок 62.00:07:31
ManyToMany relationship for liked posts
Урок 63.00:09:33
Likes controller
Урок 64.00:18:55
Implementing like functionality through XHR requests (including JavaScript)
Урок 65.00:00:52
Notifications introduction
Урок 66.00:10:11
Doctrine Table Inheritance - base Notification Entity
Урок 67.00:06:41
NotificationRepository - fetching notifications unseen by user
Урок 68.00:09:41
Unseen notification badge (Twig + JavaScript)
Урок 69.00:17:45
Doctrine EventSubscriber - saving a notification as a reaction to other events
Урок 70.00:11:05
Unseen notification list
Урок 71.00:10:12
Marking notifications as being read (Doctrine Query Builder UPDATE queries)
Урок 72.00:03:09
Introduction to EventDispatcher
Урок 73.00:05:31
Dispatching an event when user registers
Урок 74.00:04:14
EventSubscriber - listening to user register event
Урок 75.00:09:45
Sending e-mail after user registers using Swift Mailer
Урок 76.00:05:08
E-mail spooling
Урок 77.00:05:16
Creating a Mailer class to handle e-mail sending (and generation using Twig)
Урок 78.00:15:03
Account confirmation (using secure token, confirmation link on e-mail)
Урок 79.00:04:36
Installing and configuring translation component
Урок 80.00:07:15
Using trans Twig filter to translate strings and validation messages translation
Урок 81.00:10:18
Translation strings with variables (translating confirmation e-mail with links)
Урок 82.00:05:15
Translation pluralization (different translation depending on variable)
Урок 83.00:03:19
Introduction to sessions
Урок 84.00:10:01
Storing user sessions in database
Урок 85.00:09:55
LocaleSubscriber - keeping user locale (language) in session
Урок 86.00:09:13
UserPreferences Entity & OneToOne relation with User Entity
Урок 87.00:06:33
Creating new UserPreferences after user registration (responding to event)
Урок 88.00:06:18
UserLocaleSubscriber - loading user language from DB and keeping in session
Урок 89.00:01:54
Introduction to unit testing (using PHPUnit)
Урок 90.00:08:08
Writing first unit test
Урок 91.00:06:16
Creating PHPUnit Mocks
Урок 92.00:09:56
A more complicated case with testing
Урок 93.00:05:43
Creating a GitHub account and adding an SSH key
Урок 94.00:01:43
Creating a DigitalOcean droplet
Урок 95.00:01:34
First login to virtual server and changing the root password
Урок 96.00:04:44
Creating and adding an SSH key to DigitalOcean (and managing SSH keys)
Урок 97.00:04:43
Installing Apache2 on virtual server
Урок 98.00:02:19
Installing PHP 7.2 on virtual server
Урок 99.00:02:57
Installing MySQL on virtual server and creating a database
Урок 100.00:08:16
Configuring Apache Virtual Host and using fake SMTP testing server
Урок 101.00:06:08
Moving application code to production server using Git & dependencies
Урок 102.00:07:34
Running migrations on server and folder permissions
Урок 103.00:03:02
Introduction to Continuous Integration & Continuous Deployment
Урок 104.00:10:18
Setting up CircleCI (automation server)
Урок 105.00:03:58
Running our first automation job (running tests)
Урок 106.00:01:13
Adding deployment SSH key to CricleCI
Урок 107.00:12:28
Deployment job and deployment scripts
Урок 108.00:05:19
Running the deployment job