تفاوت Decorator و Strategy: اولی به شما امکان این را میدهد که پوستۀ آبجکت را تغییر دهید، اما با دومی میتوان هسته را تغییر داد.
👍3
Philocode
تفاوت Decorator و Strategy: اولی به شما امکان این را میدهد که پوستۀ آبجکت را تغییر دهید، اما با دومی میتوان هسته را تغییر داد.
وقتی از Facade pattern استفاده کنید که میخواهید رابط (interface) محدود اما سرراستی برای یک subsystem پیچیده ایجاد کنید. این پترن یک میانبر (shortcut) برای پراستفادهترین قابلیتهای subsystem که نیازمندیهای client را برآورده میکنند به وجود میآورد.
👍1
تفاوت Proxy و Decorator: غالباً اولی خودش آبجکتش را با life cycle آن مدیریت میکند، اما در Decorator این مدیریت توسط client انجام میشود.
❤1
چند سؤال مصاحبه:
- در PHP، چگونه میتوانیم از subclass به superclass دسترسی داشته باشیم؟
- برای یک ادیتور، ساختاری طراحی کنید که بدون تغییر، تگهای جدیدی معرفی شود.
- در Laravel، یک دستور به artisan اضافه کنید که لیست routeها را در یک فایل html قرار دهد.
- تفاوت overloading و overriding را توضیح دهید.
- در PHP، چگونه میتوانیم از subclass به superclass دسترسی داشته باشیم؟
- برای یک ادیتور، ساختاری طراحی کنید که بدون تغییر، تگهای جدیدی معرفی شود.
- در Laravel، یک دستور به artisan اضافه کنید که لیست routeها را در یک فایل html قرار دهد.
- تفاوت overloading و overriding را توضیح دهید.
👍3🔥1
توی جاواسکریپت،
()Date یه string بهمون میده، اما خروجی ()new Date یه آبجکته.👍2
سوال: چرا توی Typenoscript نباید از any به عنوان type استفاده کرد؟
جواب: بیکاز ما از typeها استفاده میکنیم تا به باگهای کمتری بخوریم و توسعه، راحتتر و مطمئنتر بشه. اگه قراره از any (هرچی!) استفاده کنیم، دیگه چرا از Typenoscript استفاده میکنیم؟! میریم همون Javsacriptمون رو مینویسیم!
جواب: بیکاز ما از typeها استفاده میکنیم تا به باگهای کمتری بخوریم و توسعه، راحتتر و مطمئنتر بشه. اگه قراره از any (هرچی!) استفاده کنیم، دیگه چرا از Typenoscript استفاده میکنیم؟! میریم همون Javsacriptمون رو مینویسیم!
👍3🔥2
const something = undefined
if (!something) { console.log('Yep') } else { console.log('Nope') }
if (!something) { console.log('Yep') } else { console.log('Nope') }
Anonymous Quiz
56%
Yep
44%
Nope
🔥3
🔥3
Philocode
console.log(typeof [1, 2, 3])
پس فهمیدیم که
typeof ['chiz', 'another chiz']میشه 'object'، اگه خواستید آرایهبودن رو چک کنید، یه کار ساده اینه که بفرمایید:
Array.isArray(['chiz', 'another chiz'])
اون چند نفری که گزینۀ اول رو انتخاب کردن رو هم زنده میخوام!👍1
کلاسهایی که دپندنسی کلاسهای دیگه هستن، باید خیلی خوب و واضح نوشته بشن. اگه مشکلی باشه، باید یه Exception بدن تا رفتارشون مارو فریب نده. مثلاً جایی که درست کار نکرده، null برنگردونید، تا کدی که ازش استفاده میکنه، متوجه خطا بشه. کلید اینه که خطاها باید داد بزنن، نه اینکه پنهان بشن.
👍2🤔1
نوشتن این مقاله، انرژی زیادی گرفت. اگه تا الآن LSP رو درک نکردید، امیدوارم این مقاله بهتون کمک کنه.
https://virgool.io/@WebPajooh/liskov-substitution-principle-in67fgqwv8ir
https://virgool.io/@WebPajooh/liskov-substitution-principle-in67fgqwv8ir
ویرگول
فهمیدن LSP - یکبار برای همیشه!
در این مقاله به توضیح اصل سوم SOLID یعنی LSP میپردازیم و با مثالهای متعدد، دید بهتری از قوانین آن ارائه میکنیم
❤6
Philocode
چی شد؟! 😂
این اتفاق وقتی میافته که توی اسم فایل view از نقطه استفاده کرده باشید:
return view('payment.callback');
لاراول نقطه رو با slash جایگزین میکنه و در نتیجه خیال میکنه که فایل شما اینجاست:resourcesدرحالیکه فایل شما اینجاست:
/ views
/ payment
callback{.extension}
resources
/ views
/ payment.callback{.extension}
👍2🔥1
Philocode
این اتفاق وقتی میافته که توی اسم فایل view از نقطه استفاده کرده باشید: return view('payment.callback'); لاراول نقطه رو با slash جایگزین میکنه و در نتیجه خیال میکنه که فایل شما اینجاست: resources / views / payment callback{.extension}…
GitHub
notice if dots have been used in the view name by WebPajooh · Pull Request #457 · facade/ignition
View directory names should not contain the . character.
https://laravel.com/docs/9.x/views#nested-view-directories
Today I got this message because I had used a name like foo.bar.blade.php for my...
https://laravel.com/docs/9.x/views#nested-view-directories
Today I got this message because I had used a name like foo.bar.blade.php for my...
❤3🔥2👍1
وقتی که یه سرویس نیاز داره کانفیگی رو از سیستم داشته باشه...
مثال: کلاس Payment میخواد بدونه که کدوم درگاه پرداخت، فعاله.
کانفیگ ما ممکنه متغیر سراسری (global) باشه، از دیتابیس خونده بشه یا هرچیزی. مهم نیست.
اینجا سرویس ما روی کانفیگهامون وابستگی (dependency) داره، ولی نیازی نیست کل کانفیگ رو بهش پاس بدیم:
مثال: کلاس Payment میخواد بدونه که کدوم درگاه پرداخت، فعاله.
کانفیگ ما ممکنه متغیر سراسری (global) باشه، از دیتابیس خونده بشه یا هرچیزی. مهم نیست.
اینجا سرویس ما روی کانفیگهامون وابستگی (dependency) داره، ولی نیازی نیست کل کانفیگ رو بهش پاس بدیم:
class Paymentبهجای اینجکتکردن کل آبجکت، فقط مقداری رو اینجکت کنید که سرویس واقعاً بهش نیاز داره. آبجکت appConfig ممکنه صدتا مقدار مختلف داخلش باشه و سرویس Payment جز یکی، نیازی به بقیهشون نداره.
{
private $config;
public function __construct(AppConfig $appConfig)
{
$this->config = $appConfig;
}
}
🔥1
Philocode
امشب این کتاب رو شروع کردم. به نظر کتاب خیلی خوبی میاد. #books #manning
ماتیاس نوباک میگه که آبجکتها دو نوع هستند:
+ Services
+ Other objects:
- Value objects
- Entities (models)
نوع اول باید immutable باشه، بر خلاف نوع دوم که میتونه دستکاری بشه.
+ Services
+ Other objects:
- Value objects
- Entities (models)
نوع اول باید immutable باشه، بر خلاف نوع دوم که میتونه دستکاری بشه.
👍1