آموزش ها

Adapter Pattern

توسط بردیا عباسی راد

ارسال شده در تاریخ ۲۱ بهمن,۱۳۹۵



ما سیستم خود را می سازیم، اما بخش های مختلف شبیه به هم نیستند. یک component داریم که به سه ورودی نیاز دارد با type های خاص و یک component دیگر داریم که به دو ورودی با type های خاص نیاز دارد. اولین فکری که به ذهنمان می رسد این است که بصورت جداگانه از این component ها استفاده کنیم و ورودی های مورد نیاز آن ها را تنظیم کنیم. اما این ایده خوبی نیست، بهتر است بگوییم این ایده وحشتناک است. برای حل این مشکل به یک لایه مترجم یا به اصطلاح translation احتیاج داریم و اینجا جایی است که الگوی Adapter مطرح می شود.

شبیه به یک translation layer یا لایه مترجم عمل می کند. Adapter در دنیای واقعی نیز وجود دارد. هنگامی که می خواهیم لپ تاپ خود را به projector وصل کنیم، بیشتر projector ها تنها ورودی VGA دارند، در حالیکه بیشتر لپ تاپ ها یک اتصال دیگری دارند، بنابراین برای استفاده از projector نیاز به یک Adapter داریم که اتصال را از یک فرمت به فرمت دیگری تبدیل کند.

با پیاده سازی الگوی طراحی Adapter، ما می توانیم با خیال راحت با کلاس های خارجی یا کتابخانه های خارجی و API ها کار کنیم.

ادامه مطلب

Active Record Pattern

توسط بردیا عباسی راد

ارسال شده در تاریخ ۱۵ بهمن,۱۳۹۵



ابتدا یک دیتابیس با نام active_record_db ایجاد می کنیم و یک جدول با نام users با چهار فیلد id, name, family, email ایجاد می کنیم. می خواهیم از الگوی active record برای دستیابی به این جدول استفاده کنیم.

یک کلاس با نام User ایجاد می کنیم. 

ادامه مطلب

مفهوم namespace در php

توسط بردیا عباسی راد

ارسال شده در تاریخ ۲۸ مهر,۱۳۹۵



یکی از ویژگی های مهمی که در PHP 5.3 اضافه شد فضای نام یا namespace بود. معنای کلی namespace کپسوله سازی آیتم ها است. namespace در PHP مانند ساختار دایرکتوری در سیستم عامل ها است. به عنوان مثال فایل foo.txt می تواند در دو پوشه /home/greg و /home/other قرار داشته باشد اما دو فایل با نام foo.txt نمی تواند در یک پوشه وجود داشته باشد. علاوه بر این برای دسترسی به فایل foo.txt خارج از پوشه /home/greg باید مسیر آن را هم ذکر کنیم بصورت /home/greg/foo.txt این همانند قانون استفاده از namespace در برنامه نویسی است. فضای نامی که بصورت پیش فرض در آن کد نویسی می کنیم فضای سراسری یا global space نام دارد در این namespace امکان تعریف دو کلاس با نام یکسان را نداریم این موضوع در مورد نام توابع و ثابت ها هم صدق می کند.

ادامه مطلب

آموزش استفاده از متد spl_autoload_register

توسط بردیا عباسی راد

ارسال شده در تاریخ ۲۸ مهر,۱۳۹۵



اگر با php برنامه نویسی می کنید، حتماً برایتان پیش آمده است که بخواهید کلاس هایی که در فایل هایی جداگانه نوشته اید را به یک صفحه include کنید، خب اگر تعدا این فایل ها زیاد باشد این include ها زیاد خواهد بود و سرعت برنامه نویسی را پایین خواهد آورد. برای رفع این مشکل php یک متد به نام spl_autoload_registerدارد که توسط این متد می توان include ها را بصورت خودکار انجام داد. اما این متد چه زمانی فعال خواهد شد؟ این متد زمانی فعال خواهد شد که بخواهیم یک شی از روی یک کلاس بسازیم.

ادامه مطلب

اصول پنج گانه SOLID در برنامه نویسی

توسط بردیا عباسی راد

ارسال شده در تاریخ ۱۳ مهر,۱۳۹۵



قواعد معماری solid با استفاده از مثال های ساده از سی شارپ.

در این آموزش ما سعی می کنیم که قواعد معماری solid را با استفاده از مثال های ساده سی شارپ یاد بگیریم.

ادامه مطلب