SOLID Principles Explained with Clear Examples:
𝐒 - 𝐒𝐢𝐧𝐠𝐥𝐞 𝐑𝐞𝐬𝐩𝐨𝐧𝐬𝐢𝐛𝐢𝐥𝐢𝐭𝐲 𝐏𝐫𝐢𝐧𝐜𝐢𝐩𝐥𝐞
A class should have only one reason to change.
- Example: Instead of one giant User class that handles authentication, profile updates, and sending emails, split it into UserAuth, UserProfile, and EmailService.
𝐎 - 𝐎𝐩𝐞𝐧/𝐂𝐥𝐨𝐬𝐞𝐝 𝐏𝐫𝐢𝐧𝐜𝐢𝐩𝐥𝐞
Classes should be open for extension but closed for modification.
- Example: Define a Shape interface with an area() method. When you need a new shape, just add a Circle or Triangle class that implements it.
𝐋 - 𝐋𝐢𝐬𝐤𝐨𝐯 𝐒𝐮𝐛𝐬𝐭𝐢𝐭𝐮𝐭𝐢𝐨𝐧 𝐏𝐫𝐢𝐧𝐜𝐢𝐩𝐥𝐞
Subtypes must be substitutable for their base types without breaking behavior.
- Example: If Bird has a fly() method, then Eagle and Sparrow should both work anywhere a Bird is expected.
𝐈 - 𝐈𝐧𝐭𝐞𝐫𝐟𝐚𝐜𝐞 𝐒𝐞𝐠𝐫𝐞𝐠𝐚𝐭𝐢𝐨𝐧 𝐏𝐫𝐢𝐧𝐜𝐢𝐩𝐥𝐞
Don't force classes to implement interfaces they don't use.
- Example: Instead of one fat Machine interface with print(), scan(), and fax(), break it into Printable, Scannable, and Faxable. A SimplePrinter only implements Printable.
𝐃 - 𝐃𝐞𝐩𝐞𝐧𝐝𝐞𝐧𝐜𝐲 𝐈𝐧𝐯𝐞𝐫𝐬𝐢𝐨𝐧 𝐏𝐫𝐢𝐧𝐜𝐢𝐩𝐥𝐞
High-level modules should not depend on low-level modules. Both should depend on abstractions.
- Example: Your OrderService should depend on a PaymentGateway interface, not directly on Stripe or PayPal.
The real power of SOLID is not in following each principle in isolation. It's in how they work together to make your code easier to change, test, and extend.
♻️ Repost to help others learn this
PhenixPHP is here 🔥
A modern asynchronous PHP framework powered by:
• PHP Fibers
• Amphp
• Non-blocking I/O
• Concurrency
Build scalable and high-performance applications with pure PHP.
#PHP#WebDevelopment#OpenSource
Nuevo video en YouTube! Y creo q en esta etapa donde tenemos que estar mejor preparados que nunca en una industria un poco inestable, estar preparados para ejercicios de LeetCode es crucial
"Cómo practico #LeetCode sin sufrir: mi herramienta secreta 🥷"
https://t.co/jF6zchATos
People are always asking me about how to replicate the kind of community we built for Laravel.
They’re usually after viral organic growth, which is great and definitely something we’ve benefited from. But I don’t think you can approach building community disingenuously and have it be successful.
Here are two things I’ve learned you need to build a successful community:
- A genuine appreciation of what motivates people to belong to something.
- A product that makes their lives meaningfully better in some way.
I shared this and some of the other things I’ve learned over the 14 years of building Laravel with @Mkclements for a conversation on @Accel's Spotlight On podcast.
You can check out the whole conversation here: https://t.co/W4xCEIWz4B
🚀 Don’t miss out! Early bird tickets for JSConf México 2024 are available now, but they’re selling like hotcakes! Secure yours today and join us for an unforgettable experience! 🎟️
🎟️ Get them here: https://t.co/f3QN4Ay29r
#JSConfMx2024
Sistema de archivos de Linux:
Es una estructura jerárquica que organiza y almacena archivos y directorios en un disco duro o cualquier dispositivo de almacenamiento.
Directorio raíz (/):
El directorio raíz es el punto de inicio del sistema de archivos. Todos los demás directorios y archivos se encuentran debajo de él. Es representado por una barra inclinada (/).
/bin: Contiene los binarios ejecutables esenciales para el sistema.
/boot: Almacena los archivos necesarios para el arranque del sistema.
/dev: Contiene archivos de dispositivos, que representan dispositivos de hardware.
/etc: Almacena archivos de configuración del sistema.
/home: Directorios personales de los usuarios. Cada usuario tiene su propio subdirectorio dentro de /home.
/lib: Contiene bibliotecas esenciales compartidas por los binarios en /bin y /sbin.
/media: Punto de montaje para dispositivos de almacenamiento extraíbles como CDs, DVDs y USBs.
/mnt: Utilizado para montar sistemas de archivos temporalmente.
/opt: Almacena software opcional y paquetes adicionales.
/proc: Sistema de archivos virtual que proporciona información sobre procesos y otros datos del sistema.
/run: Contiene información de estado y datos temporales utilizados durante la ejecución del sistema y por aplicaciones que se inician después del arranque. Es un sistema de archivos temporal que se monta al inicio y se vacía en cada reinicio.
/root: Directorio personal del usuario root.
/sbin: Contiene binarios esenciales del sistema, principalmente para uso de administradores.
/srv: Almacena datos específicos de servicios proporcionados por el sistema. Por ejemplo, los datos servidos por un servidor web pueden almacenarse aquí.
/proc y /sys son ejemplos de sistemas de archivos virtuales. No contienen datos reales en el disco, sino que presentan información sobre el sistema y el estado del kernel.
/tmp: Directorio para archivos temporales creados por el sistema y los usuarios.
/usr: Contiene aplicaciones y archivos de usuario. Incluye subdirectorios como /usr/bin (binarios), /usr/lib (bibliotecas) y /usr/share (datos compartidos).
/var: Almacena datos variables como logs, colas de impresión y archivos temporales en ejecución.
El esquema es otra maravilla de ByteByteGo.
PHP sigue sorprendiéndome por su sencillez, especialmente con Laravel. La gran ventaja es que no requiere muchas configuraciones ni servidores especiales. Además, el ecosistema de Laravel te proporciona casi todo lo necesario.
Larga vida a PHP y Laravel
@powerhdeleon Viniendo de proyectos escolares, estuve estimando features con menor esfuerzo del que realmente se ocupa en un proyecto real.
Cuando en realidad una buena feature, bien hecha, con escalabilidad, testing y buenas prácticas, se lleva su tiempo
En el mítico pueblo de Macondo, la familia Buendía se enfrenta al amor imposible, a su pasado y a una maldición que los condena. La serie ‘Cien años de soledad’, basada en la obra cumbre de Gabriel García Márquez, llegará este año a Netflix.