Laravel Under The Hood – جادوی ماکروها

سلام 👋

چند بار آرزو کرده اید که روشی را در مجموعه ها یا کمک کننده های رشته ای وجود نداشته باشد؟ شما شروع به زنجیر زدن روش‌ها می‌کنید، فقط وقتی مشخص می‌شود یکی از آنها گم شده است، به دیوار برخورد می‌کنید. راستش قابل درک است. می‌دانید که فریم‌ورک‌ها یک چیز برای همه هستند. چندین بار در این موقعیت قرار گرفتم.

هر بار، قبل از اینکه به نحوه گسترش چارچوب بپردازم، بررسی می‌کنم که آیا چیزی که می‌خواهم گسترش دهم، هست یا خیر کلان پذیر یا نه اما این به چه معناست؟ این دقیقاً همان چیزی است که ما در حال بررسی خواهیم بود!

WTF آیا ماکروها هستند؟ 🍏

بیایید بگوییم که این JWT را داریم:

$jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';

و ما باید هدرها را استخراج کنیم:

str($jwt)
    -before('.')
    -fromBase64()
    -fromJson(); // does not exist 😞

//  BadMethodCallException  Method Illuminate\Support\Stringable::fromJson does not exist.

این fromJson() وجود ندارد 😔 مطمئنا، می توان به سادگی انجام داد:

json_decode(str($jwt)-before('.')-fromBase64());

اما لذت در آن کجاست؟ به علاوه، این مقاله من است 🤷

بنابراین، ما به راهی برای گسترش آن نیاز داریم Stringable کلاس چند راه برای انجام این کار وجود دارد، اما لاراول از قبل فکر کرد، می دانست که توسعه دهندگان ممکن است بخواهند روش های سفارشی را اضافه کنند، بنابراین کلاس را …

Source link