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

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

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

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

آموزش بلاک کاربران با استفاده از htaccess

با سلام و درود

امروز قابلیتی رو معرفی میکنیم به عنوان Deny visitors by referrer .

قابلیت مسدود سازی بازدید کننده (blocking facilities) توسط وب سرویس آپاچی (Apache Web Server) مارا قادر میسازد از دسترسی برخی بازدیدکنندگان که از سایت های دیگر هست جلوگیری نماییم .

اگر به فایل های log سایت اتتون نگاه کرده باشید و متوجه ی افزایش حیرت آور ترافیک شده باشید , به احتمال زیاد سایت شما هک شده و یا فایل های عمومی سایتان(مانند css ها ) در اختیار فردی دیگر و یا در داخل سایتی دیگر  قرار گرفته .

خب برای استفاده از این قابلیت و جلوگیری از دسترسی برخی بازدیدکنندگان نیاز هست mod-rewrite روی سرور شما فعال باشد :

آموزش htaccess

برای مشاهده ی کامل آموزش کلیک نمایید .

Loose Coupling چیست ؟

سلام و احترام

مقاله ی امروز توضیحی درباره ی Loose Coupling  و Tight Coupling است .

اگر برنامه نویس باشید و مقالات و آموزش های  مربوط به برنامه نویس های حرفه ای را دنبال نمایید حتما با اصطلاحاتی تحت عناوین Loose Coupling و Tight Coupling برخورد کرده اید. اما تفاوت این دو مورد در چیست؟

توضیح مختصر

Loose Coupling

Loose Coupling به معنای به حداقل رساندن وابستگی های کلاس به کلاس های دیگری که مستقیما از آن ها استفاده می کند می باشد. در Tight Coupling کلاس ها و آبجکت ها به یکدیگر به شدت وابسته می باشند. در حالت کلی Tight Coupling معمولا ساختار بدی می باشد چرا که انعطاف پذیری و قابلیت استفاده مجدد کد را پایین می آورد و نیز توسعه و تغییر در کد را بسیار مشکل تر می نماید و … .

Tight Coupling

شیئی که Tightly Coupled باشد شیئی می باشد که نیاز دارد تا در مورد بقیه شی ها یا object ها دانش بسیار کمی داشته باشید و معمولا بسیار به ساختار یکدیگر وابسته می باشند. در یک نرم افزار Tightly Coupled تغییر در یک شی معمولا نیازمند تغییر در چندین شی دیگر نیز می باشد. در یک پروژه کوچک به راحتی می توانیم تغییرات را تشخیص دهیم و احتمال اینکه بخشی از کد که نیاز به اصلاح دارد بدون اصلاح بماند بسیار کم می باشد. اما در پروژه های بزرگتر همه برنامه نویس ها وابستگی های درونی آبجکت ها به یکدیگر را نمی شناسند و بنابراین تغییر در یک آبجکت احتمال این که باعث عدم اجرای درست بخش دیگری از برنامه شود را بیشتر می کند. اما هر مجموعه آبجکت های  Loosely coupled به یکدیگر وابسته نمی باشند.

 

مشکلات Tight Coupling

فرض کنید در کی سیستم ریموت و تلویزیون  Tight Coupling برخی مشکلات را ایجاد می کند. کلاس بالا را در نظر بگیرید تمام آبجکت ها شدیدا به یکدیگر وابسته می باشند که باعث بروز مشکلات زیر خواهد شد:

  1. تلویزیون بدون ریموت کنترل کار نخواهد کرد
  2. تغییر در  ساختار کلاس تلویزیون نیاز در تغییر کلاس ریموت می باشد
  3. کنترل تنها می تواند کلاس تلویزیون را کنترل کند و برای وسایل دیگر غیر استفاده می شود

برای مشاهده ی متن کامل آموزش کلیک کنید .

آموزش دیزاین پترن Factory Design Pattern

سلام خدمت دوستان گلم

امروز شروع میکنیم به معرفی دیزاین پترن فکتوری (Factory Design Pattern) .

اول از همه بگم دیزاین پترن فکتوری (Factory Design Pattern) همانند دیزاین پترن Singleton و Multiton و … یک دیزاین پترن از نوع Creationa است زیرا به نحوه ساخت آبجکت ها به صورت runtime نظارت می نماید .

دیزاین پترن فکتوری (Factory Design Pattern)   این امکان را به ما می دهد که در زمان اجرا (runtime) تصمیمی بگیریم از کدام کلاس باید آبجکت ساخته شود و آن آبجکت را برگرداند  و وظیفه ساخت آین آبچکت ها بر عهده متد factory هست که داخل کلاس دیزاین پترن ما وجود دارد .

تکته مهم اینکه در دیزاین پترن فکتوری تابع سازنده نداریم و روند ساخت آبجکت ها بر عهده همان متد factory است . برای جا افتادن کاربر این دیزاین پترن یک مثال میزنم :

فرض کنید میخواهیم توسط یک کانکشن  به یک Datasource وصل بشیم  و نوع این کانکشن در زمان اجرا توسط کاربر به وسیله ی فرمی که براش قرار دادیم تعیین می شود . (مثلا از نوع xml باشد و یا sql و یا csv , ..) وقتی کاربر نوع مورد نظر خودش را به وسیله ی فرم انتخاب کرد باید یک آبجکت از کلاس مربوطه بسازیم و کانکشن را در اختیار کاربر قرار دهیم تا شروع به کار کند.پس خیلی راحت دیزاین پترن فکتوری به کمک ما می آید و این روند ساخت شی را به صورت runtime انجام می دهد .

به صورت کلی 3 نوع  دیزاین پترن فکتوری وجود دارد :

  1. Simple factory (مانند دو مورد بعدی رسمی نیست)
  2. Factory method
  3. Abstract factory

دیزاین پترن Simple factory :

Simple factories که یک زمانی به static factories معروف بود , سادترین نوع این دیزاین پترن می باشد . گرچه یک دیزاین پترن رسمی نیست ولی در پروژه هایی با مقیاس کوچک و متوسط کاربرد خود را دارد .

Simple factories ها کلاس هایی هستند که می توانند یک کلاس به خصوص را برگردانند (این کلاس ها به product معروف هستند .)

قانون های دیزاین پترن Simple factory : 

  • کلاس های factory باید یک متد استاتیک داشته باشند .
  • متدهای factory باید یک نمونه از کلاس را برگردانند.
  • در یک لحظه باید 1 آبجکت ایجاد و برگردانده شود .

برای مشاهده کامل آموزش کلیک نمایید . 

آموزش دیزاین پترن Adapter Design Pattern

سلام دوستان

بریم سراغ دیزاین پترن Adapter  .

بهترین مثالی که میشه برای دیزاین پترن Adapter زد خود وسلیه ی آداپتور برقی است . کار آداپتور تغییر ولتاژ بین دو وسیله برقی است جوری که بتوانند با هم کار کنند و سازگار باشند . در واقع یه رابط یا پلی است بین این دو تا ارتباط این دو موجودیت را برقرار کند.

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

چیزی که در ساخت آداپتور مهم است این است که شما لازم نیست رفتار شی اتون رو تغییر دهید .تنها چیزی که لازم است این است که آداپتوری ایجاد کنید که اون سوکت 3 شاخه را به 2 شاخه تبدیل کند.

دیزاین پترن آداپتور (Adapter Design Pattern) از نوع structural یا ساختاری است  زیر رابطه ی بین دو آبجکت را ایجاد می کند.

2 نوع آموزش دیزاین پترن آداپتور (Adapter Design Pattern) معرفی کردن :

  1. inheritance version که به عنوان class version هم شناخته می شود .
  2. composition version که به عنوان  object version هم شناخته می شود.

در این جلسه فقط مثالی از  composition version زده می شود زیرا این روش طرفدارای بیشتری پیدا کرده است .

برای مشاهده ی کامل آموزش کلیک نمایید . 

آموزش تغییر محتوای فایل php.ini با استفاده از php

سلام و درود

فایل php.ini فایل پیکربندی اصلی آموزش php است. این فایل اجازه می دهد تا کاربر به تعریف برخی از تنظیمات برای مفسر PHP شوند. با آن شما می توانید برخی از دستورات، از قبیل”register_globals ” و فعال کردن و دسترسی به لاگ خطاها ، و یا تغییر پیش فرض پوشه  آپلود برای فایل های آپلود شده از طریق یک اسکریپت پی اچ پی استفاده نمایید. تغییرات در فایل php.ini  معمولا در عرض 10 تا 30 دقیقه به روز می شوند، و این عمل بستگی به تنظیمات سرور دارد.

یک اسکریپت پی اچ پی در اولین مرحله به php.ini نگاه می کند و به این ترتیب هر شخصی می توانید فایل php.ini را با تنظیمات پی اچ پی خود سازگار کند ولی توجه داشته باشید که بدلایل امنیتی و اینکه می توان از طریق فایل های شل به اطلاعات سایر کاربران و در نهایت به سرور نفوذ کرد  این امر باعث شده است که اکثریت هاستینگها این گزینه را بصورت عمومی قرار ندهند و آن را برای کاربران غیرفعال کنند و شما تنها قادر خواهید بود دستوراتی که نیاز دارید را به هاستینگ خود ارائه دهید و در صورتی که دستورات شما خطری برای سرور ایجاد نکند فعال می شود

در فایل php.ini ، تعداد زیادی از مشخصه های مرتبط با زبان PHP ذخیره شده اند. این مشخصه ها را از دو طریق می توانیم تغییر بدهیم. یکی با ویرایش خود فایل php.ini و دیگری با اجرای یک سری دستور PHP که باعث می شود مقدار ذخیره شده برای مشخصه ها در فایل php.ini ، تغییر داده شوند.

همانطور که قبلا گفتم معمولا در هاست های اشتراکی، صاحب سایت به فایل php.ini دسترسی مستقیم ندارد (که بتواند خود فایل را ویرایش کند). در واقع، به دلیل اشتراکی بودن هاست، شرکت هاستینگ این اجازه را نمی دهد، مگر اینکه تنظیماتی در یک کنترل پنل برای مدیران سایت ها طراحی کند تا تعدادی از مشخصه ها را بتوانند تغییر بدهند، که این حالت معمولا برای هاست های ابری (میزبانی ابری) اجرا می شود. اما هنگام استفاده از شبیه ساز سرور بر روی کامپیوتر خانگی، می توانیم مستقیما فایل php.ini را ویرایش کرده و مشخصات آن را تغییر بدهیم. علاوه بر این، باید محدودیتی برای تغییر مشخصه های فایل php.ini از طریق ((کدنویسی))، توسط شرکت هاستینگ، تعیین نشده باشد (اگر قصد داریم آنها را با کدنویسی تغییر بدهیم).

برای مشاهده ی کامل آموزش کلیک کنید .