Тёмный

Value Objects Practical Example - What is a Value Object? - Full PHP 8 Tutorial 

Program With Gio
Подписаться 54 тыс.
Просмотров 18 тыс.
50% 1

Опубликовано:

 

6 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 76   
@aryank8695
@aryank8695 2 года назад
I am very thankful you make such quality videos. Please keep making more videos on concepts like these, these are very helpful. I really feel like learning a lot in short time watching your videos.
@ProgramWithGio
@ProgramWithGio 2 года назад
Glad to hear that, thank you 🙏
@mwaas
@mwaas Год назад
After every lesson I feel lucky to be watching this wonderful course
@ProgramWithGio
@ProgramWithGio Год назад
Happy to hear that
@andersoncdz1
@andersoncdz1 Год назад
Bro, you are amazing, your php 8 course is incredible, thank you very much for this gem.
@ProgramWithGio
@ProgramWithGio Год назад
Glad you like it, thank you 💙💙
@SerhiiDorn
@SerhiiDorn 2 года назад
You make great content. Thank You much. Your code style is highly elegant. I'm looking forward to form request, auth, authorization, middleware, and several most common patterns using in laravel
@ProgramWithGio
@ProgramWithGio 2 года назад
Thank you and thanks for suggestions 💙
2 года назад
Great video, Gio. Thank you!
@ProgramWithGio
@ProgramWithGio 2 года назад
Thank you 💙💙
@manh9105
@manh9105 Год назад
Hi! there is an additional 'i' in entity ! Have enjoyed this course to the fullest , would use it as reference for years to come!!
@ProgramWithGio
@ProgramWithGio Год назад
Hey, thank you so much 🙌. I didn't notice the typo, could you share the timestamp on where it is?
@manh9105
@manh9105 Год назад
@@ProgramWithGio 8.40 & 20.46 respectively! Thank you for this wonderful series
@ProgramWithGio
@ProgramWithGio Год назад
@@manh9105 hahaha 🤣🤣, omg how did I not notice that. That looks so funny now 😂. Thank you 🙌 good eyes 👀
@manh9105
@manh9105 Год назад
@@ProgramWithGio Most Welcome 😄
@vegekou100
@vegekou100 10 месяцев назад
Pure Gold 🏆
@ProgramWithGio
@ProgramWithGio 10 месяцев назад
Thank you
@MayankJaniOfficial
@MayankJaniOfficial 2 месяца назад
Hi Gio, big thanks for these PHP tutorials. I have years of experience, but after these videos, I still learnt a lot and now much more confident. Btw do you have any recommendations for similar types of videos for Javascript? I have watched Laracasts but looking for something different.
@ProgramWithGio
@ProgramWithGio 2 месяца назад
Thank you. I'm not involved much in the JS content to be honest so I'm not sure. I usually check traversymedia or laracasts.
@stephen.cabreros
@stephen.cabreros 11 месяцев назад
awesome and fantastic. I might gonna use this reference someday. Immutable and side effect free values makes ease by making it less prone to bugs, don't know yet when to use the equalTo method for checking equality. But I might figure it out someday, thanks
@ProgramWithGio
@ProgramWithGio 11 месяцев назад
Thank you
@chlouis-girardot
@chlouis-girardot 2 года назад
Thanks Sir 🙏, awesome content, it's cristal clear 👌
@ProgramWithGio
@ProgramWithGio 2 года назад
You're welcome
@pusikurac986
@pusikurac986 2 года назад
do you plan on doing some videos on most common design patterns in php?
@ProgramWithGio
@ProgramWithGio 2 года назад
Maybe in the future.
@AMoktar
@AMoktar 10 месяцев назад
Awesome video, thanks
@ProgramWithGio
@ProgramWithGio 10 месяцев назад
Glad you liked it
@OlayDede
@OlayDede Год назад
Thank you for the great content, Gio!
@ProgramWithGio
@ProgramWithGio Год назад
Thank you 💙
@mohdsyafiqjohar6883
@mohdsyafiqjohar6883 3 месяца назад
Hi,, Thank you for a wonderful video & deep explanation about it.. It's really easy to understand.. May I know, what is the PHPStorm plugin that you using to make this sign '->', '===', etc pretty? I seen it in your another video..
@ProgramWithGio
@ProgramWithGio 3 месяца назад
It's not a plugin, I have font ligatures feature enabled in my IDE
@IvanVlk
@IvanVlk 2 года назад
I'm really excited about how introducing ORM crippled Entitites into some data-db objects, so you need to introduce things like Value Objects to heal your improper object design. "Entities are normally identified with ID" - yes? Since when? Entity is normal object with properties and methods. Like any other object. Just using ORM made them so. Even senior developers are crippling the OOP by using ORM and then using external "services" to implement methods, which should be integral to object (entity). And then adding artificial IDs to every entity, so no one really understand the code nor DB structure, because is full of IDs you don't really need for anything (because you have composite keys, right?). To conclude this: you don't need any VO here. Simply use your entities and set their properties by other entities, like dimension etc. Sure, you can make them immutable, by default, or by method. Then your object of PackageDimnension class is valid for whole module, even for another entity, like Pallet. Then pick your pre-set PriceCounter, feed it with Package object and it will set the price. Then just pass the object into some kind of mapper to store value, that's it.
@ProgramWithGio
@ProgramWithGio 2 года назад
You make some good points & I partially agree, but Value Objects are a big part of DDD design and part of the PHP ecosystem, and so are entities. This is why I decided to cover it because new devs will eventually work with some sort of ORM or come across these terms and is important for them to know what they are and what is the difference. We covered Entities earlier in this series (within ORM & Doctrine/Symfony context) so explaining the difference in that context was important.
@MuratUysal
@MuratUysal 2 года назад
You are great teacher.
@ProgramWithGio
@ProgramWithGio 2 года назад
Thank you 🙌
@memack101
@memack101 2 года назад
Thank you Gio.
@ProgramWithGio
@ProgramWithGio 2 года назад
No problem 💙💙
@hansschuijff
@hansschuijff Год назад
Valuable lesson again, Gio,. Thank you. In the code you kept the new enum, VO's and Service class together in a directory. Is that what you would normally do? I can see they are related and perhaps the only relevance for them is in that service, but you also created an enum directory in the app, so I wondered if there are rules in that you follow.
@ProgramWithGio
@ProgramWithGio Год назад
Good observation. I usually put them in their own directories like Data Objects and place value objects & DTOs there. I didn't pay attention to the folder structure in this lesson cause I probably got carried away talking 🙈. In the project section you will see that we will have DataObjects directory. Also this comes down to preference, some like to group related classes in their own domain/directory. Like Shipping could be a directory and everything related to shipping within there and so on. I wouldn't definitely put everything under Services though, so good catch 👍
@Zubbee
@Zubbee 2 года назад
Hi Gio, I enjoyed this video. Learning further to simplify an application and make it easier to manage. But pls, why did we need to create the equalto() function? I didn't quite get that. Why do we need to compare the the other value object with the current value object? I understood the function, its the "why" I didn't get. Thanks a lot Gio.
@ProgramWithGio
@ProgramWithGio 2 года назад
You may need to compare two value objects. Having equal to method allows you to set how the objects can be compared. You can still compare them using == which will compare property values but as I mentioned it will do loose comparison. With custom equal to method you can do strict
@Zubbee
@Zubbee 2 года назад
@@ProgramWithGio Ok Gio, I understand it better now. Thanks a lot.
@codingzen869
@codingzen869 2 года назад
PHP design patterns stuff would be a nice addition if it's not already planned on the series. Very few resources on this on YT.
@ProgramWithGio
@ProgramWithGio 2 года назад
Thanks for the suggestion, no plans yet but it's in my list
@pasizdobrekuce
@pasizdobrekuce Год назад
Wow man! This is so so useful. Thank you so much! Please if you have time (and will), make a short series on DDD.
@ProgramWithGio
@ProgramWithGio Год назад
Glad you liked it, thank you. Unfortunately I don't follow DDD and don't know much about it. Maybe in future I can make a series about it & learn it myself along the way 👍. Thanks for the suggestion
@pasizdobrekuce
@pasizdobrekuce Год назад
@@ProgramWithGio We started to implement it in our legacy and it opened our eyes (almost literally). Everything makes much more sense.
@ProgramWithGio
@ProgramWithGio Год назад
@@pasizdobrekuce that's awesome
@free2idol1
@free2idol1 Год назад
@@ProgramWithGio may I know why you don't prefer DDD and what architecture/ design method you often use in your development process? I am researching DDD and it seems articles about it on the internet is mainly theory-based.
@ProgramWithGio
@ProgramWithGio Год назад
@@free2idol1 it's not that I don't prefer, I typically do monoliths with a bit of microservices
@SlainR2
@SlainR2 2 года назад
very good, Gio!
@ProgramWithGio
@ProgramWithGio 2 года назад
Thank you
@truthteachers
@truthteachers Год назад
In my view, DTO should called as Data Transformation Object as i see it was only doing transformation and not transfer. This is very similar to what we do in Data Warehousing using ETLs. I may be wrong.
@ProgramWithGio
@ProgramWithGio Год назад
Data transformers can also be another type of class. DTO is used for transferring data though can be used to transform as well, so in a way you could say DTO is also a transformer since it transforms arrays or unstructured data into structured objects. DTOs are also immutable and read-only.
@truthteachers
@truthteachers Год назад
@@ProgramWithGio Tq you for the clarification.
@josechirino5168
@josechirino5168 2 года назад
Really helpful, thank you
@ProgramWithGio
@ProgramWithGio 2 года назад
Glad it was helpful, thank you 🙌
@Abdulrahman-my3tu
@Abdulrahman-my3tu 2 года назад
I suggest that you make Laravel course. Thank you
@ProgramWithGio
@ProgramWithGio 2 года назад
Thanks for the suggestion 💙
@elmarzougui
@elmarzougui 2 года назад
Great Content
@ProgramWithGio
@ProgramWithGio 2 года назад
Thank you
@rxxt-sh1vj
@rxxt-sh1vj 2 года назад
Please also make a video on building middleware from scratch and its implementation without using any framework
@ProgramWithGio
@ProgramWithGio 2 года назад
Not planned currently but will add this to the list, thanks for the suggestion
@free2idol1
@free2idol1 Год назад
Thanks for awesome video again. But at 21:15 does DTO has no id? i.e what if we have a DTO that represent a User model in laravel? User instance must have id then how come its DTO does not?
@ProgramWithGio
@ProgramWithGio Год назад
No DTO has no id. That is Entity, you would have User entity. DTO is just to pass data around so like take form request parameters create DTO and pass that DTO to a service class to create the User entity
@free2idol1
@free2idol1 Год назад
@@ProgramWithGio thanks for your reply... But that seems to just 1 use case of DTO, there is another scenario where DTO can be used as api resource. There is a package called "spatie-laravel-data" which allows id property in DTO (check section "as-a-resource/from-data-to-resource" at its doc for detail).
@ProgramWithGio
@ProgramWithGio Год назад
@@free2idol1 sure, I just gave you one example since you asked. There are more uses for DTO for sure and API is one of them, I showed API example as well in the video. I have not used that package, DTOs typically dont have an ID and business logic. If someone implemented it with ID it's up to them, maybe has a special use case.
@ProgramWithGio
@ProgramWithGio Год назад
@@free2idol1 I checked the package and they call those Data Objects and use it for multiple purposes. Within the "as DTO" section you will see there is no ID. So that package isn't just DTO, it's more like a multipurpose DTO.
@free2idol1
@free2idol1 Год назад
@@ProgramWithGio Okay... it seems they've mixed 2 concepts (DTO and Entities) in that single package. Do you think so? Also, if I put `public ?$id` in the DTO, then what would be the consequence later on? And how to apply Entitiy concept in Laravel? or a Eloquent Model already represents an Entity?
@devcast6414
@devcast6414 2 года назад
Thanks
@ProgramWithGio
@ProgramWithGio 2 года назад
You're welcome
Далее
5 Rules For DTOs
17:56
Просмотров 41 тыс.
Value Objects
8:12
Просмотров 18 тыс.
Enums considered harmful
9:23
Просмотров 204 тыс.
I've been using Redis wrong this whole time...
20:53
Просмотров 356 тыс.