آموزش حرفه ای php

آموزش کامل و حرفه ای php به زبان فارسی

آموزش حرفه ای php

آموزش کامل و حرفه ای php به زبان فارسی

SOLID چیست؟

موضوع این جلسه , اصول طراحی شی گرا SOLID است . این اصول در تمام زبان های برنامه نویسی مثل php موجود و قابل پیاده سازی است .

SOLID مخفف پنج اصل بسیار مهم در مدیریت وابستگی (Dependency Management) در توسعه ی برنامه های شی گرا می باشد. در واقع هر کدام از حروف کلمه ی SOLID به یکی از این اصول بر می گردد.
یکی از مشکلاتی که طراحی نامناسب برنامه های شی گرا برای برنامه نویسان ایجاد می کند موضوع مدیریت وابستگی در اجزای برنامه می باشد. اگر این وابستگی به درستی مدیریت نشود مشکلاتی شبیه موارد زیر در برنامه ایجاد می شوند:
برنامه ی نوشته شده را نمی توان تغییر داد و یا قابلیت جدید اضافه کرد. دلیل آن هم این است که با ایجاد تغییر در قسمتی از برنامه، این تغییر به صورت آبشاری در بقیه ی قسمت ها منتشر می شود و مجبور خواهیم بود که قسمت های زیادی از برنامه را تغییر دهیم. (این مشکل را Rigidity می نامیم.)
تغییر دادن برنامه مشکل است و آن هم به این دلیل که با ایجاد تغییر در یک قسمت از برنامه، قسمت های دیگر برنامه از کار می افتند و دچار مشکل می شوند. (این مشکل را Fragility می نامیم.)
قابلیت استفاده مجدد از اجزای برنامه وجود ندارد. در واقع، قسمت های مجدد برنامه ی شی گرای شما آنچنان به هم وابستگی تو در تو دارند که به هیچ وجه نمی توانید یک قسمت را جدا کرده و در برنامه ی دیگری استفاده کنید. (این مشکل را Immobility می نامیم.)
اصول SOLID که قصد رفع کردن این مشکلات و بسیاری مسائل گوناگون را دارند عبارت اند از:

  1. Single Responsibility Principle

تفاوت Hashing و Encryption چیست ؟

با سلام

مقاله امروز درباره تعریف هر یک از  اصطلاحات Hashing و Encryption است و مشخص می کنیم این دو چه تفاوت هایی باهم دارند . حتما این اصطلاحات را در زبان هایی مانند php و حتی فریم ورک هایی مانند لاراول شنیده اید .

Hashing یا درهم سازی چیست ؟

فرآیند Hashing یا درهم سازی به تبدیل کردن یک رشته داده به یک مقدار یا رشته با اندازه ثابت که این رشته یا مقدار خروجی نمایانگر رشته اصلی باشد گفته می شود. تصور کنید که شما یک فایل متنی با 10 هزار خط متن را به یک الگوریتم درهم سازی یا Hashing می سپارید و خروجی آن یک رشته داده 128 بیتی خواهد بود ، در همین حین اگر شما یک فایل متنی با 1 خط متن هم به همین الگوریتم درهم سازی یا Hashing تحویل دهید در نهایت خروجی شما نیز یک رشته داده 128 بیتی خواهد بود. تصور کنید شما هزاران فایل داده دارید با حجم های مختلف که می خواهید در آنها جستجو کنید ، به جای اینکه به دنبال فایل اصلی بگردید کافیست که فقط به دنبال مقدار Hash مورد نظر بگردید و این فرآیند جستجوی شما را در پایگاه های داده بسیار سریع می کند. یکی از پر کاربردترین استفاده های یک تابع درهم سازی یا Hashing Function در پایگاه داده های وب سایت ها یا حتی سیستم خود شما برای نگهداری رمزهای عبور است. تمامی رمزهای عبوری که در پایگاه داده یک وب سایت ذخیره می شوند به حالت Hash شده نگهداری می شوند ، این یعنی اینکه اگر رمز عبور شما 1 کاراکتر باشد و یا اینکه 100 کاراکتر باشد در نهایت بصورت مثلا یک رشته داده 128 بیتی در پایگاه داده بصورت درهم سازی شده نگهداری می شود. هر بار که شما می خواهید به وب سایت وارد شوید ، رمز عبور شما دریافت می شود و تبدیل به مقدار یا Hash Value می شود و با پایگاه داده مورد نظر مقایسه می شود ، اگر مقادیر برابر بود یعنی رمز شما درست است ، دیگر فرقی نمی کند رمز شما یک کاراکتر باشد یا ده ها کاراکتر در نهایت سرعت جستجو در چنین حالتی بسیار بالا خواهد رفت.

تفاوت Hashing و Encryption  چیست ؟

آموزش psr0 Based Autoloading در php

در ادامه ی مقالات مربوط به composer و Autoloading , نوبت میرسه به  نوع دیگری از autoload در composer به نام psr-0 صحبت کنیم. (اگر با composer آشنایی ندارید پیشنهاد میکنم سری های قبلی آموزش composer و Autoloading را مطالعه کنید.)

استاندارد psr-0 و psr-4 بر خلاف دو روش قبلی یعنی files , classmap با namespace ها در کلاس ها سرو کار دارد .

خب اول به یک پیش زمینه درباره کلاس ها اشاره کنم.

همانطور که می دانید در زبان php می توانید کلاس هایی هم نامی داشته باشید که namespace های مختلفی دارند .

آموزش psr0 Based Autoloading در php

آموزش Autoloading کلاس ها با Composer

امروز می خواهم درباره Autoloading در php صحبت کنم . قبلا در مقاله ی " composer چیست ؟ "  درباره ی composer و طریقه کار با اون و همچنین نصب Composer در محیط های ویندوز و لینوکس صحبت کردیم . (پیشنهاد می کنم اگر با composer آشنا نیستین حتما اون مقاله را مطالعه کنید)

ولی امروز میخواهم به صورت اختصاصی تر درباره ی نحوه autoload کردن کلاس ها با استفاده از composer صحبت کنم . همانطور که می دانیم در php برای استفاده از هر کلاسی باید اون کلاس رو در صفحه ای که لازم داریم include یا require کنیم تا php آن کلاس را بشناسد و بتوان از آن استفاده کرد . خب مشکل اینجاست که اگر تعداد کلاس های مورد استفاده زیاد شود این include کردن هر کلاس واقعا مشکل ساز میشه و تمرکز مارو کم می کنه و بیشتر وقتمون میره سمت اینکه کلاس ها در داخل کدام دایرکتوری هستند و تک تک آن ها را به صفحه ی خودمون include کنیم .

خوشبختانه composer این مشکل را برای ما حل کرده و خودش این موضوع را به عهده می گیرد و ما فقط کافی است بسته به نیازمون یکی از 4 روش زیر را که در فایل composer.json می باشد استفاده نماییم . داخل فایل composer آبجکتی به نام autoload وجود دارد که داخل آن تعریف می کنیم که چه فایل هایی را و از چه طریق برای ما autoload بسازد.

4 روش :

  • File Based Autoloading
  • Classmap Based Autoloading
  • PSR-0 Autoloading
  • PSR-4 Autoloading

سایت اصلی composer روش PSR-4 Autoloading را پیشنهاد می کند اما ما در این مقاله  هر 4 روش را بررسی می نماییم .

آموزش Autoloading کلاس ها با Composer

cURL چیست ؟

سلام خدمت دوستای عزیز

بحث امروز درباره php curl هست و اینکه با استفاده از curl چه کارهایی می توانیم انجام دهید که امیدوارم با مثال هایی که زده میشه استفاده از curl خوب جا بیوفته براتون .

با استفاده از cURL می توان با سرورهای مختلف و از طریق پروتکل های متفاوت ارتباط بر قرار کرد و کارهای مشابه کارهای زیر را انجام داد:

  • نوشتن ماژولهای پرداخت آنلاین و ارتباط با درگاه های پرداخت
  • دانلود و آپلود فایل از سرورهای دیگر
  • لاگین کردن به بخش کاربری سایتها

چرا از Curl استفاده کنیم ؟

این یک حقیقت است که برای بازیابی محتوای یک صفحه می توان راه های مختلفی را اسفتاده کرد و به نظر خیلی وقت ها ناشی از تنبلی ما هست که از Curl استفاده نمیکنیم !

آموزش curl در php