0 0 تومان
تبلیغات اینترنتی
آموزش طراحی سایت (HTML CSS Javascript) | آتریا
آموزش سی شارپ
آموزش فتوشاپ

برنامه نویسی php

  • پروژه فروش فایل در PHP

    در این آموزش قصد داریم تا حرفه ای ترین و محبوب ترین فریم ورک PHP به نام Laravelرا به صورت پروژه محور و تحت یک فروشگاه فروش فایل خدمت شما کاربران محترم، آموزش دهیم.

    شاید در ذهن تان این سوال ایجاد شود که فریم ورک چیست...!؟

    مجموعه ای از کد ها و کلاس ها و توابع آماده که در قالب یک پروژه در اختیار برنامه نویس قرار می گیرد و برنامه نویس می تواند از تمام موارد مندرج در این پروژه در پروژه اصلی خود استفاده کند. برای مثال ما برای ساخت فرم عضویت و ورود بدون فریم ورک باید اقدام به کدنویسی طولانی نماییم و رابط های دیتابیس و جداول و... را ایجاد کنیم و سپس از طریق اعتبار سنجی هویت کاربر را تایید و یا کاربر را وارد دیتابیس(عضویت) نماییم اما در فریم ورک Laravel برای ساخت بخش عضویت و ورود، تنها از کد زیر استفاده می کنید:

    پروژه فروش فایل در PHP

    php artisan make:auth

    سپس به صورت اتوماتیک برگه های عضویت و ورود و دیتابیس ایجاد شده و ما تنها باید فیلد ها را ویرایش و تغییرات ظاهری را اعمال نماییم و موارد مورد نیاز را اضافه کنیم.

    دلایل استفاده از فریم ورک

    مهمترین دلایل ما برای استفاده از فریم ورک ها امنیت بسیار بالای آنها می باشد چون کلاس و توابع توسط برنامه نویسان حرفه ای نوشته و توسعه پیدا کرده اند و همچنین کتابخانه ای از کد ها آماده در اختیار ما قرار دارد که باعث می شود سرعت کدنویسی ما به شدت افزایش پیدا کند مانند نمونه ساخت فرم عضویت و ورود که با کد نویسی php شاید 30 دقیقه زمان برای یک فرد حرفه ای لازم باشد تا اقدام به ایجاد آن نماید اما تحت فریم ورک، یک برنامه نویس عادی در کمتر از 3 دقیقه می تواند این عملیات را انجام دهد و صد البته صد ها دلیل دیگر نیز وجود دارد اما مهمترین آنها این 3 مورد می باشد که بیان شده است.

    بخش های مختلف پروژه فروش فایل در PHP

    در پروژه فروش فایل در PHP، در درس های اول ما تنها بخش های مختلف و کدنویسی های کلی را آموزش می دهیم و در ادامه در یک پروژه کاملا حرفه ای قصد داریم توسط بوت استرپ قالب وب سایت دانلود فایل(فروشگاه دانلودی) را آماده کنیم و همچنین توسط خود لاراول اقدام به ساخت فروشگاه نماییم در این آموزش نحوه درج ایمن فایل و عضویت کاربر و ویرایش کاربر و ساخت سطوح مختلف کاربری و موارد بسیار مهم دیگر قرار دارد.

    پروژه فروش فایل در PHP شامل 38 درس ارزشمند است. اما جهت آشنایی شما با نحوه ی بیان و تدریس مدرس، 4 درس اول بصورت رایگان ارائه شده است:

    1- آموزش پروژه محور فریم ورک لاراول فصل اول (قسمت اول)  - رایـــــگـان

    2- آموزش پروژه محور فریم ورک لاراول فصل اول (قسمت دوم) - رایـــــگـان

    3- آموزش پروژه محور فریم ورک لاراول فصل اول (قسمت سوم) - رایـــــگـان

    4- آموزش پروژه محور فریم ورک لاراول فصل اول (قسمت چهارم) - رایـــــگـان


    برای خرید و دانلود فیلمآموزش پروژه فروش فایل در PHP کلیک کنید.

  • تابع date در PHP

    تابع Date در PHP

    Wiki

     این تابع، رشته ای از داده ها را به عنوان پارمتر می گیرد و نتایج آنها را به صورت زمان یا تاریخ نمایش می دهد.

    در حقیقت با استفاده از این تابع می توان تاریخ یا زمان را در شکل های مختلف نشان داد.

    نحوه استفاده:

    date(format,timestamp)

    پارامتر توضیحات
    format الزامی است، فرمت تاریخ یا زمان را مشخص می کند.
    timestamp اختیاری است، یک برچسب زمان که باید به فرمتی که در پارامتر اول مشخص کرده ایم تبدیل شود(به صورت پیشفرض تاریخ جاری در نظر گرفته می شود).

      بعضی از کاراکترهایی که می توان به عنوان پارامتر الزامی، در تابع date استفاده کرد:

    • a: صبح یا عصر، نماینده am و pm است.
    • A: صبح یا عصر، نماینده AM و PM است.
    • B: زمان اینترنت سوئچ (swatch) که یک زمان جهانی است.
    • C: تاریخ ISO 8601، تاریخ به صورت YYYY_MM_DD . این کد فرمت در نسخه php 5 ارائه شده است.
    • d: روز به صورت عدد دو رقمی از 01 تا 31
    • D: روز هفته به صورت 3 کاراکتر مانند :Mon و Sun
    • F: ماه در فرمت متنی . محدوده آن از January تا December است.
    • g: ساعت در فرمت 12 ساعت از 1 تا 12
    • G: ساعت در فرمت 24 ساعت از 0 تا 23
    • h: ساعت در فرمت 12 ساعت از 01 تا 12
    • H: ساعت در فرمت 24 ساعت از 00 تا 23
    • i: دقیقه به صورت عدد دو رقمی از 00 تا 59
    • I: این مقدار بولی ساعت را یک ساعت به جلو و عقب می برد (در آخر تابستان و اول فروردین)
    • j: روز را در یک ماه نشان می دهد. از 1 تا 31
    • l: روز را در هفته از Sonday تا Monday مشخص می کند.
    • L: این مقدار بولی سال کبیسه را مشخص می کند و اگر سال کبیسه باشد مقدار یک را بر می گرداند.
    • m: ماه را در فرمت دو رقمی از 01 تا 12 مشخص می کند.
    • M: ماه در فرمت 3 کاراکتر مانند: Jan و Dec
    • n: ماه در فرمت عددی بدون صفر از 1 تا 12
    • o: تفاوت زمان منطقه جغرافیایی موجود و GMT را در واحد ساعت بیان می کند.
    • r: زمان و تاریخ در فرمت RFC822
    • s: ثانیه در محدوده 00 تا 59
    • S: پسوند های ترتیبی اعداد در فرمت دو کاراکتر .مانند: 1st یا 23th
    • t: تعداد روز های ماه را از 28 تا 31 مشخص می کند.
    • T: تنظیمات منطقه زمانی سرور در فرمت 3 کاراکتر مانند EST
    • U: تعداد کل ثانیه ها از اول ژانویه 1970 تاکنون را بیان می کند.
    • w: روز هفته در یک رقم. 0 برای یکشنبه و 6 برای شنبه
    • W: شماره هفته از اول سال. مانند 21 برای نشان دادن هفته 21ام سال
    • y: سال در فرمت دورقمی، 05 برای 2005
    • Y: سال در فرمت چهار رقمی، مانند 2006
    • z: روز را مشخص می کند. محدوده آن 0 تا 365 است.
    • Z: افست منطقه زمانی را بر حسب ثانیه بیان می کند. محدوده آن بین 43200- و 43200 است.

    نکته: کاراکتر هایی که در لیست بالا نباشند، مستقیماً چاپ می شوند. مانند: / و , و … .

     مثال:

    <?php
    echo date("Y/m/d") . "<br />";
    echo date("Y.m.d") . "<br />";
    echo date("Y-m-d");
    ?>

    خروجی کد بالا:

    2009/05/11
    2009.05.11
    2009-05-11


    پارامتر timestamp در تابع date

    Wiki

    تابع ()mktime یک برچسب زمان یونیکسی برمی گرداند که می توان از آن، به عنوان پارامتر اختیاری تابع ()date استفاده کرد.

    برچسب زمان یونیکسی: منظور تعداد ثانیه هایی است که از زمان (January 1 1970 00:00:00 GMT) تا زمانی که در تابع mktime مشخص شده است.

    نحوه استفاده:

    mktime(hour,minute,second,month,day,year,is_dst)

    مثال: در مثال زیر با استفاده از تابع mktime و date تاریخ فردا را چاپ می کنیم:

    <?php
    $tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
    echo "Tomorrow is ".date("Y/m/d", $tomorrow);
    ?>

    خروجی کد بالا: (البته هنگام اجرای مثال)

    Tomorrow is 2013/05/12

    برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHPکلیک کنید.

  • تبدیل سبد خرید به حالت داینامیک

    جلسه ی هفتم طراحی یک فروشگاه اینترنتی-تبدیل سبد خرید به حالت داینامیک

    در قسمت پنجم از این جلسه، به آموزش 'تبدل سبد خرید به حالت داینامیک' خواهیم پرداخت.


    آنچه که در قسمت قبل طراحی شد

    در قسمت قبل، موارد کلی زیر آموزش داده شدند:

    1.  طراحی سبد خرید با استفاده از php

    مشاهده ی آنچه که در قسمت قبل طراحی شد:

     


    آنچه که در قسمت 'تبدیل سبد خرید به حالت داینامیک' خواهید آموخت

    در قسمت 'تبدیل سبد خرید به حالت داینامیک' موارد زیر آموزش داده خواهند شد:

    توضیح اجمالی:

    1.  ادامه ی طراحی سبد خرید با استفاده از php

    توضیح تفصیلی:

    1. بررسی set شدن کوکی با استفاده از دستور isset.
    2. اجرای دو کوئری به صورت تو در تو و استفاده از دو حلقه while جهت دریافت مشخصات محصولاتی که در سبد خرید کاربر وجود دارد.
    3. کار با کوئری select در pdo و مثال هایی متفاوت ، از این کوئری مهم.
    4. کار با افزونه های فایرفاکس که کار ما را در طراحی وب سایت راحت تر می کنند.
    5. نمایش پیغام هیچ محصولی در سبد خرید شما وجود ندارد (در حالتی که کاربر هنوز سبد خریدی را تشکیل نداده است)

    تبدیل سبد خرید به حالت داینامیک

     در این جلسه، ابتدا می خواهیم به سراغ قسمت سبد خرید شما برویم، برویم.همان طور که می دانید،  قبلا کدهای HTML و جی کوئری مربوط به این سبد خرید را یک بار نوشته بودیم. حالا می خواهیم در این قسمت، اطلاعات را از tblsabad دریافت کنیم و در داخل سبد خرید شما، به کاربر نشان بدهیم:

    به عبارت دیگر، می خواهیم از حالت استاتیک،به حالت داینامیک برویم. پس نرم افزار دریم ویور را باز می کنیم. درواقع این سایتی بود که ما بر روی آن کار می کردیم. که نام آن eshop بود.

    در نرم افزار دریم ویور، قسمت سبد خرید در فایل top.php قرار داشت:

     همان طور که در تصویر زیر مشاهده می کنید، اینجا li هایی بود که در قسمت سبد خرید شما، آنها را ایجاد کرده بودیم. حالا برای اینکه بتوانیم این بار اطلاعات را از دیتابیس دریافت کنیم کدهایی که مربوط به دیتابیس هست و قبلا یک بار آنها را نوشته ایم، را کپی می کنیم و در اینجا از آنها استفاده می کنیم. زیرا برای اینکه تکراری نشود، ما این کدها را دوباره نمی نویسیم:

     

     حالا قرار است که ما در داخل قسمت سبد خرید شما،محصولات  سبد خریدی که کاربر قبلا آنها انتخاب کرده است را به او نمایش بدهیم. ابتدا باید چک کنیم که آیا، اصلا سبد خریدی وجود دارد یا نه. یعنی آیا کوکی ما ست شده است یا نه. پس با این توضیحات، ما به یک دستور if نیاز داریم...


    دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:

    • شماره جلسه: 7
    • نام فایل ویدئو: 27
    • فرمت فایل: mp4.

    نقطه ی شروع بحث بالا (تبدیل سبد خرید به حالت داینامیک) در ویدئو: 02:48

  • تبدیل سبد خرید به حالت داینامیک2

    جلسه ی هفتم طراحی یک فروشگاه اینترنتی-تبدیل سبد خرید به حالت داینامیک(2)

    در قسمت ششم از این جلسه، به آموزش 'تبدیل سبد خرید به حالت داینامیک(2)' خواهیم پرداخت.


    آنچه که در قسمت قبل طراحی شد

    در قسمت قبل، موارد کلی زیر آموزش داده شدند:

    1.  تبدیل سبد خرید از حالت استاتیک به داینامیک

    مشاهده ی آنچه که در قسمت قبل طراحی شد:

     


    آنچه که در قسمت 'تبدیل سبد خرید به حالت داینامیک(2)' خواهید آموخت

    در قسمت 'تبدیل سبد خرید به حالت داینامیک(2)' موارد زیر آموزش داده خواهند شد:

    توضیح اجمالی:

    1.  ادامه ی تبدیل سبد خرید  از حالت استاتیک به داینامیک

    توضیح تفصیلی:

    1.  ایجاد یک تغییر کوچک در ست کردن زمان کوکی ها به خاطر از بین نرفتن آنها با بستن مرورگر
    2. نحوه ی ست کردن زمان کوکی یه 1 سال.
    3. نحوه ی نمایش دادن آنی محصول بعد از کلیک کردن بر روی اضافه به سبد خرید.
    4. طراحی قسمت تعداد محصول در سبد خرید. 
    5. نحوه ی تشخیص اینکه، آیا محصولی که کلیک شده است، در سبد خرید وجود دارد یا نه.

    و...


    تبدیل سبد خرید به حالت داینامیک(2)

     کاری که می خواهیم در این جلسه انجام دهیم به این صورت می باشد: زمانی که کاربر دکمه ی افزودن به سبد خرید را کلیک می کند در داخل سبد خرید شما، تا قبل از اینکه صفحه را رفرش کند، محصول خودش را نمی تواند مشاهده کند. یعنی این محصول، به صورت آنی و لحظه ای، وارد قسمت سبد خرید شما نمی شود. حتما لازم است که کاربر، صفحه ی خود را رفرش کند تا محصول جدیدی را در داخل سبد خرید خودش بتواند مشاهده کند:

     می خواهیم کاری کنیم که به صورت آنی و لحظه ای، به محض اینکه کاربر، سبد خرید شما را کلیک کرد، محصول انتخابی در داخل سبد خرید شما، به او نمایش داده شود. و نیازی به رفرش کردن صفحه نباشد:

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


    دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:

    • شماره جلسه: 7
    • نام فایل ویدئو: 28
    • فرمت فایل: mp4.

    نقطه ی شروع بحث بالا (تبدیل سبد خرید به حالت داینامیک2) در ویدئو: 05:20

  • تبدیل سبد خرید به حالت داینامیک3

    جلسه ی هفتم طراحی یک فروشگاه اینترنتی-تبدیل سبد خرید به حالت داینامیک(3)

    در قسمت هفتم از این جلسه، به آموزش 'تبدیل سبد خرید به حالت داینامیک(3)' خواهیم پرداخت.


    آنچه که در قسمت قبل طراحی شد

    در قسمت قبل، موارد کلی زیر آموزش داده شدند:

    1. تبدیل سبد خرید از حالت استاتیک به داینامیک

    مشاهده ی آنچه که در قسمت قبل طراحی شد:

     


    آنچه که در قسمت 'تبدیل سبد خرید به حالت داینامیک(3)' خواهید آموخت

    در قسمت 'تبدیل سبد خرید به حالت داینامیک(3)' موارد زیر آموزش داده خواهند شد:

    توضیح اجمالی:

    1. ادامه ی تبدیل سبد خرید از حالت استاتیک به داینامیک

    توضیح تفصیلی:

    1.  ایجاد یک فیلد جدید برای سبد خرید که مشخص کننده ی قیمت است.
    2. نحوه ی ایجاد یک li جدید به هنگام افزودن یک کالای جدید به سبد خرید.
    3. استخراج اطلاعات محصول از خود محصول نمایش داده شده.
    4. اختصاص یک id یا کلاس به محصولات

    و...


    تبدیل سبد خرید به حالت داینامیک(3)

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

     یعنی دقیقا همین چیزی که در تصویر زیر می بینید:

     

     بنابراین می خواهیم این فیلد قیمت را هم به سادگی، به سبد خرید اضافه کنیم.  پس نرم افزار دریم ویور را باز می کنیم و سایتی که بر روی آن کار می کردیم را می آوریم:

     فایل هایی که با آنها کار داریم عبارتند از فایل left.php و top.php پس آنها را باز می کنیم. در بحث سبد خرید، ما فقط با این دو فایل کار داشتیم چون فایل left.php فایلی بود که بخش پرفروش ترین کالاها را دربر داشت و فایل top.php هم که سبد خرید ما بود. حالا به داخل فایل top.php می رویم و در جایی که اطلاعات سبد خرید را(کالاهای موجود در سبد خرید کاربر را) از دیتابیس دریافت می کردیم، اکنون می خواهیم قیمت را هم از دیتابیس بگیریم و مشابه با تعداد محصولات در سبد خرید، آن را هم نمایش بدهیم. بنابراین فایل top.php را باز می کنیم و کدهای زیر را می آوریم:

     


    دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:

    • شماره جلسه: 7
    • نام فایل ویدئو: 29
    • فرمت فایل: mp4.

    نقطه ی شروع بحث بالا (تبدیل سبد خرید به حالت داینامیک3) در ویدئو: 00:10

  • تبدیل سبد خرید به حالت داینامیک4

    جلسه ی هشتم طراحی یک فروشگاه اینترنتی-تبدیل سبد خرید به حالت داینامیک(4)

    در قسمت هشتم از این جلسه، به آموزش 'تبدیل سبد خرید به حالت داینامیک(4)' خواهیم پرداخت.


    آنچه که در قسمت قبل طراحی شد

    در قسمت قبل، موارد کلی زیر آموزش داده شدند:

    1. تبدیل سبد خرید از حالت استاتیک به داینامیک

    مشاهده ی آنچه که در قسمت قبل طراحی شد:

     


    آنچه که در قسمت 'تبدیل سبد خرید به حالت داینامیک(4)' خواهید آموخت

    در قسمت 'تبدیل سبد خرید به حالت داینامیک(4)' موارد زیر آموزش داده خواهند شد:

    توضیح اجمالی:

    1. ادامه ی تبدیل سبد خرید از حالت استاتیک به داینامیک

    توضیح تفصیلی:

    1. اضافه کردن یک بخش جدید به سبد خرید
    2. نشان دادن تعداد کل کالاهای سبد خرید به کاربر
    3. نحوه ی نمایش دادن جمع کل قیمت محصولات موجود در سبد خرید
    4. نحوه ی ایجاد دکمه ی تسویه حساب سبد خرید

    تبدیل سبد خرید به حالت داینامیک(4)

     کار دیگری که الان باید انجام دهیم این است که، این بخش پایین را ایجاد کنیم:

     یعنی درواقع بخشی را ایجاد کنیم که، هم جمع کل قیمت را نشان بدهد و هم دکمه ی تسویه حساب.

    این بخش را همان طوری که مشخص است، باید در داخل div سبدی که قبلا ساخته بودیم اضافه کنیم. فقط یک نکته ای وجود دارد که ما باید به آن توجه داشته باشم. قبلا در ابتدا ما یک div را ساختیم تحت عنوان sabad، اجازه بدهید که ابتدا به داخل نرم افزار دریم ویور برویم تا بهتر متوجه موضوع بشویم:

     همان طور که در تصویر بالا می بینید، ما قبلا یک div را تحت عنوان sabad ساخته بودیم. در داخل این دایو sabad، ابتدا آمدیم و علامت مثلث را قرار دادیم با استفاده از یک تگ img . و بعد یک قسمت دیگری را تحت عنوان sabad1 ایجاد کردیم که در داخل آن با استفاده از تگ ul تگ های li را echo کردیم  ومحصولاتمان را داخل sabad1 نشان دادیم:

     

    حالا سوال اینجاست که، ما باید قسمتی که مربوط به دکمه ی نمایش کل قیمت، و دکمه ی تسویه حساب است را در کدام یک از این بخش ها قرار دهیم؟ آیا باید آن را در داخل عنصر دیو sabad قرار دهیم یا داخل دیو با آی دی sabad1 ؟

    در واقع باید در کجا کدنویسی آن را انجام دهیم؟

    اگر که یک مقدار به محل قرار گیری این بخش دقت کنیم، می توانیم جواب را به سادگی متوجه شویم. همان طور که در تصویر زیر مشاهده می کنید، زمانی که ما در اینجا، اسکرول را با سمت بالا یا پایین می آوریم، قسمت نشان داده شده در عکس زیر ثابت است. یعنی قرار نیست محل قرار گیری این قسمت عوض شود:


    دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:

    • شماره جلسه: 8
    • نام فایل ویدئو: 30
    • فرمت فایل: mp4.

    نقطه ی شروع بحث بالا (تبدیل سبد خرید به حالت داینامیک4) در ویدئو: 07:29

  • تجرد یا abstract در PHP

    تجرد یا Abstract:

    Wiki

    تجرد یا Abstract موقعی استفاده می شود که بخواهیم کلاس یا تابعی را بدون داشتن بدنه تعریف کنیم و بخواهیم بدنه آن را بعداً تعریف کنیم.

    به عنوان مثال اگر بخواهیم چندین کلاس مختلف برای کار با دیتابیس های مختلف در برنامه تعریف کنیم که در آن برخی کارها یکسان می باشد؛ میتوانیم یک کلاس abstract برای تعریف اولیه و توابع یکسان آنها تعریف کنیم و سپس به نسبت هر دیتابیس توابع مخصوص آن را فراخوانی کرد.

    مزیت های استفاده از abstarct:

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

    مثال:

    <?php
    abstract class Base_DB{
        private $id; 
        abstract function update($data,$id); 
        abstract function insert($data);
        function save($data){
            if(is_null($this->id)){
                $this->insert($data);
            }else{
                $this->update($data,$this->id);
            }
        }
    }
    class MySQL_DB extends Base_DB{
        function update($data,$id)
        { 
            // کدهای مربوط به ویرایش 
        }
        function insert($data)
        {
            // کدهای مربوط به درج کردن 
        }
    }
    class Oracle_DB extends Base_DB{ 
        function update($data,$id)
        { 
            // کدهای مربوط به ویرایش 
        }
        function insert($data)
        {
            // کدهای مربوط به درج کردن 
        } 
    }
    ؟>

    با کمک کلاس های MySQL_DB و Oracle_DB که در بالا تعریف شد می توان با تابع save و یا هر تابع دیگری کارهای مربوطه را انجام داد؛ توجه داشته باشید که توابع update و insert که در کلاس Base_DB به صورت abstract تعریف شده اند باید در کلاسهایی که از آن سرچشمه می گیرند تعریف شده باشند.


    interface

    Wiki

    کلاسهایی که به صورت interface تعریف می شوند تقریباً همانند کلاس هایی هستند که به صورت abstract تعریف می شوند اما نحوه تعریف و استفاده آنها متفاوت می باشد.

    مثال:

    <?php
    interface class Base_DB {
        public function update($data,$id);
        public function insert($data);
    }

    class MySQL_DB implements Base_DB{ 
        function update($data,$id)
        { 
            // کدهای مربوط به ویرایش 
        }
        function insert($data)
        {
            // کدهای مربوط به درج کردن 
        }
    }
    class Oracle_DB implements Base_DB{ 
        function update($data,$id)
        { 
            // کدهای مربوط به ویرایش 
        }
        function insert($data)
        {
            // کدهای مربوط به درج کردن 
        }

    ؟>

    توجه داشته باشید که کلاسهایی که به صورت interface تعریف می شوند نباید شامل بدنه یک تابع باشند؛ در صورتی که کلاس های abstract می توانستند ادغامی از توابع معمولی و توابع abstract شوند.
    به این نکته نیز توجه داشته باشید که کلاسهای interface بجای extends با implements توسعه می یابند.


    تشخیص کلاس یک شئ

    Wiki

    در برنامه نویسی توجه به این نکته که آیا شئ مورد نظر از کلاس مد نظر ما ساخته شده است یا نه نکته ای است که کاربرد های زیادی دارد.

    برای این منظور می توان از دستور instanceof استفاده کرد؛

    instanceof همچنین برای کلاس هایی که از یک کلاس دیگر ارث بری کرده اند نیز استفاده می شود؛

    مثال:

    <?php 
    class Parent
    {
        // ...
    }

    class PLUS extends Parent
    {
        // ...
    }

    $test = new PLUS();
    if($test instanceof PLUS)
    {
        echo "test comes from PLUS....<br />";
    }
    if($test instanceof Parent)

        echo "test comes from Parent....<br />";

    ?>

    خروجی کد بالا:

    test comes from PLUS....
    test comes from Parent....

    همانطور که در مثال بالا دیده میشود test$ هم از نوع PLUS است و هم از نوع Parent!

  • تجزیه کننده dom چیست؟

    تجزیه کننده DOM چیست؟

    Wiki

    یک سری اشیاء استاندارد برای دسترسی و دستگاری فایل های HTML و XML فراهم می کند و در سه بخش زیر مجزا شده است:

    •  هسته DOM:  یک سری اشیاء استاندارد برای فایل های ساخت یافته تعریف می کند.
    • XML DOM: یک سری اشیاء استاندارد برای فایل های XML تعریف می کند.
    • HTML DOM: یک سری اشیاء استاندارد برای فایل های HTML تعریف می کند.

    تجزیه کننده XML

    Wiki

    برای خواندن، ویرایش کردن، ایجاد و خلاصه دستگاری یک فایل XML، به یک تجزیه کننده XML نیاز داریم.

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

    1. تجزیه کننده درختی: این تجزیه کننده فایل XML را به یک ساختار درختی منتقل می کند و تمام فایل را تحلیل کرده و دسترسی به عناصر درخت را فراهم می کند.
    2. تجزیه کننده رویدادی: یک فایل XML را به صورت یک سری از رویدادها می بیند و زمانی که یک رویداد خاص اتفاق می افتد، یک تابع را برای بررسی آن صدا می زند.

    تجزیه کننده DOM از نوع درختی است.

    به فایل XML زیر توجه کنید:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <from>Amir</from>

    تجزیه کننده DOM فایل XML بالا را به صورت زیر می بیند(سه سطح):

    • سطح اول درخت: یک فایل XML را مشخص می کند.
    • سطح دوم درخت: ریشه عنصر را مشخص می کند که تگ <from> است.
    • سطح سوم درخت: متن عنصر که کلمه "Amir" است.

    نصب تجزیه کننده XML

    Wiki

    توابع تجزیه کننده DOM قسمتی از هسته PHP هستند و نیازی به نصب وجود ندارد.


    فایل XML زیر در مثال های آینده استفاده خواهد شد:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
    </note>


    لود و چاپ یک فایل XML

    Wiki

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

    <?php
    $xmlDoc = new DOMDocument();
    $xmlDoc->load("note.xml");
    print $xmlDoc->saveXML();
    ?>

    خروجی کد بالا:

    ToveJaniReminderDon't forget me this weekend!

    اگر در Browser ویندوزتان گزینه "View source" را انتخاب کنید، فایل HTML زیر را خواهید دید:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
    </note>

    مثال بالا یک شی از DOMDocument ایجاد می کند و فایل "note.xml" را داخل آن لود می کند. 

    سپس تابع ()saveXML فایل XML لود شده را داخل یک رشته قرار می دهد، حالا می توانیم آنرا در خروجی چاپ کنیم.


    حلقه زدن در یک فایل XML

    Wiki

    مثال: در مثال زیر می خواهیم یک تجزیه کننده XML تعریف کنیم و فایل XML قبلی را در آن لود کرده و بین عناصر آن یک حلقه بزینم:

    <?php
    $xmlDoc = new DOMDocument();
    $xmlDoc->load("note.xml");

    $x = $xmlDoc->documentElement;
    foreach ($x->childNodes AS $item)
      {
      print $item->nodeName . " = " . $item->nodeValue . "<br />";
      }
    ?>

    خروجی کد بالا:

    #text =
    to = Tove
    #text =
    from = Jani
    #text =
    heading = Reminder
    #text =
    body = Don't forget me this weekend!
    #text =

    در مثال بالا  می بینید که بین هر عنصر یک نود خالی وجود دارد.

    در زمان ایجاد یک فایل XML، در بین نودهای آن فضاهای خالی قرار می گیرد، تجزیه کننده XML با این فضاهای خالی مانند یک عنصر معمولی برخورد می کند و اگر مراقب آنها نباشید، برای شما مشکل ایجاد خواهند کرد.


    برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

  • تجزیه کننده expat چیست؟

    XML چیست؟

    Wiki

    XML برای شرح و بیان اطلاعات طراحی شده است، در واقع ساختار اطلاعات را شرح می دهد.

    در XML هیچ تگ از پیش تعریف شده ای وجود ندارد، و باید خودمان تگ ها را تعریف کنیم.


    تجزیه کننده Expat چیست؟

    Wiki

    برای خواندن، ویرایش کردن، ایجاد و خلاصه دستگاری یک فایل XML، به یک تجزیه کننده XML نیاز داریم.

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

    1. تجزیه کننده درختی: این تجزیه کننده فایل XML را به یک ساختار درختی منتقل می کند و تمام فایل را تحلیل کرده و دسترسی به عناصر درخت را فراهم می کند.(همان طور که قبلاً گفته شد تجزیه کننده DOM از نوع درختی است)
    2. تجزیه کننده رویدادی: یک فایل XML را به صورت یک سری از رویدادها می بیند و زمانی که یک رویداد خاص اتفاق می افتد، یک تابع را برای بررسی آن صدا می زند.

    تجزیه کننده Expat از نوع رویدادی است.

    نکته: تجزیه کننده رویدادی، به جای اینکه روی ساختار تمرکز کند روی محتوای یک فایل XML تمرکز می کند، به همین خاطر دسترسی به اطلاعات در این نوع تجزیه کننده سریع تر است.

    به فایل XML زیر توجه کنید:

    <from>Amir</from>

    یک تجزیه کننده رویدادی فایل XML بالا را به صورت سه رویداد زیر گزارش می دهد:

    1. شروع عنصر: from
    2. شروع بخص اطلاعات با مقدار: "Amir"
    3. بستن عنصر: form

    مثال XML بالا با یک فرمت درست نوشته شده است، اما به خاطر اینکه DTD ندارد، معتبر نیست.

    نکته: DTD یا Document Type Definition مشخص کننده قوانین به کار رفته در یک سند است، به این قوانین الگو می گویند، الگوها ابزارهای مهمی برای نگهداری پیوستگی اسناد محسوب می گردند. با مقایسه سند معینی با الگوی آن اعتبار آن سند تعیین می شود. اگر یک سند با تمام قوانین موجود در الگوی آن مطابقت داشته باشد به آن یک سند معتبر می گویند. معتبر بودن یک سند نشانه مطلوب بودن داده های آن است.

    تجزیه کننده Expat یک تجزیه کننده بدون اعتبار است، و برای آن فرقی نمی کند که سند شنا از DTD استفاده کرده یا نه!

    سند XML شما باید در یک فرمت درست نوشته شده باشد والا تجزیه کننده Expat خطایی نمایش خواهد داد.


    نصب تجزیه کننده Expat

    Wiki

    توابع تجزیه کننده Expat قسمتی از هسته PHP هستند و نیازی به نصب وجود ندارد.


    فایل XML زیر در مثال های آینده استفاده خواهد شد:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
    </note>


    اعلان یک تجزیه کننده XML

    Wiki

    در PHP می توانیم یک تجزیه کننده XML را اعلان کنیم، برای رویدادهای مختلف، تعدادی رسیدگی کننده (Handler) تعریف می شود و سپس فایل XML را تحزیه می کنیم.

    مثال:

    <?php
    //Initialize the XML parser
    $parser=xml_parser_create();

    //Function to use at the start of an element
    function start($parser,$element_name,$element_attrs)
      {
      switch($element_name)
        {
        case "NOTE": echo "-- Note --<br />"; break;
        case "TO": echo "To: "; break;
        case "FROM": echo "From: "; break;
        case "HEADING": echo "Heading: "; break;
        case "BODY": echo "Message: ";
        }
      }

    //Function to use at the end of an element
    function stop($parser,$element_name)
      {
      echo "<br />";
      }

    //Function to use when finding character data
    function char($parser,$data)
      {
      echo $data;
      }

    //Specify element handler
    xml_set_element_handler($parser,"start","stop");

    //Specify data handler
    xml_set_character_data_handler($parser,"char");

    //Open XML file
    $fp=fopen("test.xml","r");

    //Read data
    while ($data=fread($fp,4096))
      {
      xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d",
      xml_error_string(xml_get_error_code($parser)),
      xml_get_current_line_number($parser)));
      }

    //Free the XML parser
    xml_parser_free($parser);
    ?>

    خروجی کد بالا:

    -- Note --
    To: Tove
    From: Jani
    Heading: Reminder
    Message: Don't forget me this weekend!

    توضیح مثال بالا:

    1. تابع ()xml_parser_create یک تجزیه کننده XML را اعلان می کند.
    2. تابع start به عنوان رسیدگی کننده به رویدادهای مختلف ایجاد شده است.
    3. تابع ()xml_set_element_handler مشخص می کند، زمانی که تجزیه کننده با تگ باز و بسته مواجه شد، کدام تابع اجرا شود.
    4. تابع ()xml_set_character_data_handler مشخص می کند، زمانی که تجزیه کننده با اطلاعات مواجه شد، کدام تابع اجرا شود.
    5. تابع ()xml_parse فایل "test.xml" را تجزیه می کند.
    6. در صورتی که خطایی رخ دهد، تابع ()xml_error_string خطای گزارش شده را به شرحی مناسب تبدیل می کند.
    7. در آخر تابع ()xml_parser_free حافظه اختاص داده شده به تجزه کننده را آزاد می کند.

    برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

  • تعریف توابع در PHP

    تعریف توابع در PHP

    Wiki

    قدرت واقعی PHPدر توابع آن است، در PHP بیش از 1000 تابع از قبل نوشته شده وجود دارد.

    در این فصل به شما نشان خواهیم داد که در PHP چگونه می توانید توابع خودتان را تعریف کنید.

    یک تابع به وسیله صدا زدن آن اجرا خواهد شد، شما می توانید از هر جای صفحه آنرا صدا بزنید.

    نحوه تعریف توابع:

    function functionName()
    {
    code to be executed;
    }

    توجه:برای نامگذاری توابع موارد زیر را در نظر داشته باشید:

    • اسامی توابع به نحوی انتخاب شوند که نام انتخاب شده معرفی کننده عملی باشد که تابع انجام می دهد
    • نام تابع می تواند با حروف و یا علامت "_" شروع شود(با عدد نمی تواند شروع شود).

    مثال: یک تابع ساده که با صدا زدن آن نام من چاپ می شود:

    <html>
    <body>

    <?php
    function writeName()
    {
    echo "pahlavan sadegh";
    }

    echo "My name is ";
    writeName();
    ?>

    </body>
    </html>

    خروجی کد بالا:

    My name is pahlavan sadegh


    ارسال پارامتر به توابع

    Wiki

    یک پارامتر چیزی شبیه یک متغیر است، پارامترها بعد از نام تابع داخل پرانتز تعریف می شوند.

    مثال1: در مثال زیر با ارسال نام شخص به تابع، بعد از صدا زدن تابع، نام های مختلف با فامیلی یکسان چاپ می شود.

    <html>
    <body>

    <?php
    function writeName($fname)
    {
    echo $fname . " Ahmadi.<br />";
    }

    echo "My name is ";
    writeName("Ali");
    echo "My sister's name is ";
    writeName("Sara");
    echo "My brother's name is ";
    writeName("Amir");
    ?>

    </body>
    </html>

    خروجی کد بالا:

    My name is Ali Ahmadi.
    My sister's name is Sara Ahmadi.
    My brother's name is Amir Ahmadi.

    مثال2: تابع زیر دو پارامتر دارد.

    <html>
    <body>

    <?php
    function addNumbers($a , $b)
    {
    $sum = $a + $b;
    echo $sum;
    }

    addNumbers(100,200);
    ؟>

    </body>
    </html>

     خروجی کد بالا:

    300

    نکته: به صورت پیش فرض پارامترهایی که به توابع ارسال می شوند، طوری هستند که در صورتی که در تابع تغییر کنند مقدار اصلی آنها تغییری نخواهد کرد و به همان صورت باقی خواهند ماند، اما اگر در تعریف تابع قبل از اسم متغیر از علامت "&" استفاده کنیم، این ویژگی تغییر می کند یعنی با تغییر یک متغیر در درون تابع، اصل متغیر هم تغییر خواهد نمود، به مثال زیر توجه کنید.

    مثال:

    <html>
    <body>

    <?php
    function changeit(&$string)
    {
    echo "String is: " . $string . '<br />';
    $string="Learning PHP";
    echo "String Changed to: " . $string . '<br />';
    }

    $str="PLUS";
    changeit($str);
    echo $str;

    ?>

    </body>
    </html>

    خروجی کد بالا:

    String is: PLUS
    String Changed to: Learning PHP
    Learning PHP


     بازگرداندن یک مقدار توسط توابع

    Wiki

    شما می توانید از دستور return برای بازگرداندن یک مقدار استفاده کنید، یعنی کافی است نتیجه را جلوی دستور return قرار دهید.

    مثال:

    <html>
    <body>

    <?php
    function add($x,$y)
    {
    $total=$x+$y;
    return $total;
    }

    echo "1 + 16 = " . add(1,16);
    ?>

    </body>
    </html>

    خروجی کد بالا:

    1 + 16 = 17


    توابع از پیش تعریف شده:

    Wiki

    در php بیش از 5300 تابع از پیش تعریف شده وجود دارد که البته برای اجرای آنها ممکن است در ورژن های مختلف برخی توابع وجود نداشته باشند و یا برای اجرای بعضی توابع احتیاج باشد تا extension خاصی نصب باشد.
    توابع از پیش تعریف شده همانند توابعی که کاربر تعریف می کند اجرا می شوند.


    برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

  • تفاوت دستور echo و print

    در PHPدو روش اصلی برای چاپ وجود دارد: echo و print

    تقریباً در هر مثالی از این بیاموز از echo (و print) استفاده شده است. بنابراین در این مطلب سعی شده است تا در این باره مقداری بیشتر توضیح داده شود.


    دستور echo و print در PHP

    Wiki

    تفاوت های echo و print:

    • echo: یک یا بیشتر از یک آرگومان را می گیرد و مقداری را برنمی گرداند. برای اتصال دو رشته هم می توان از "." و هم از "," استفاده کرد.
    • print: تنها یک آرگومان را می گیرد و همیشه مقدار 1 را برمی گرداند. برای اتصال دو رشته فقط می توان از "." استفاده کرد.

    شباهت های echo و print:

    • هر دو تابع نیستند.
    • جزئی از ساختار زبانی هستند و می توان از آنها با یا بدون پرانتز استفاده نمود.

    نکته: echo سرعت بیشتری نسبت به print دارد.


    دستور echo در PHP

    Wiki

    نمایش رشته ها

    در مثال زیر، نحوه نمایش رشته های مختلف با استفاده از دستور echo نشان داده شده است: (همچنین توجه داشته باشید که رشته چاپ شده می تواند شامل تگ های HTML باشد)

    مثال (تفاوت دستور echo و print)

    <?php
    echo "<h2>PHP is fun!</h2>";
    echo "Hello world!<br>";
    echo "I'm about to learn PHP!<br>";
    echo "This", " string", " was", " made", " with multiple parameters.";
    ?>

    خروجی کد بالا:

    PHP is fun! Hello world!
    I'm about to learn PHP!
    This string was made with multiple parameters.

    نمایش متغیرها

    در مثال زیر، نحوه ی چاپ رشته ها و متغیر ها با دستور echo نشان داده شده است:

    مثال (تفاوت دستور echo و print)

    <?php
    $txt1="Learn PHP";
    $txt2="Beyamooz.com";
    $cars=array("Volvo","BMW","Toyota");

    echo $txt1;
    echo "<br>";
    echo "Study PHP at $txt2";
    echo "My car is a {$cars[0]}";
    ?>

    خروجی کد بالا:

    Learn PHP
    Study PHP at Beyamooz.com
    My car is a Volvo

    توجه: اگر متغییری درون علامت " قرار بگیرد مقدار متغییر به جای آن قرار می گیرد. اما اگر درون علامت ' قرار بگیرد مقدار متغییر جایگزین نمی شود.


    دستور print در PHP

    Wiki

    نمایش رشته ها

    در مثال زیر، نحوه نمایش رشته های مختلف با استفاده از دستور print نشان داده شده است: (همچنین توجه داشته باشید که رشته چاپ شده می تواند شامل تگ های HTML باشد)

    مثال (تفاوت دستور echo و print)

    <?php
    print "<h2>PHP is fun!</h2>";
    print "Hello world!<br>";
    print "I'm about to learn PHP!";
    ?>

    خروجی کد بالا:

    PHP is fun! Hello world!
    I'm about to learn PHP!

    نمایش متغیرها

    در مثال زیر، نحوه ی چاپ رشته ها و متغیر ها با دستور print نشان داده شده است:

    مثال (تفاوت دستور echo و print)

    <?php
    $txt1="Learn PHP";
    $txt2="Beyamooz.com";
    $cars=array("Volvo","BMW","Toyota");

    print $txt1;
    print "<br>";
    print "Study PHP at $txt2";
    print "My car is a {$cars[0]}";
    ?>

    خروجی کد بالا:

    Learn PHP
    Study PHP at Beyamooz.com
    My car is a Volvo

    برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

  • توابع تاریخ و زمان در PHP

    مقدمه ی توابع تاریخ و زمان در PHP

    توابع تاریخ و زمان به شما این امکان را می دهند تا هنگامی که اسکریپت phpشما به کار می افتد، بتوانید تاریخ و زمان را از سرور به دست بیاورید. سپس شما می توانید با استفاده از توابع تاریخ و زمان استفاده کنید تا تاریخ و زمان را به فرمت دلخواه خود در آورید. 

    نکته: این توابع بر اساس تنظیمات محلی سرور شما کار می کنند. پس به خاطر داشته باشید که به هنگام کار با این توابع، سال های کبیسه و صرفه جویی در زمان را درنظر بگیرید. 


    نصب

    توابع تاریخ و زمان،قسمتی از هسته ی php هستند. بنابراین برای استفاده از این توابع، نیازی به نصب آنها ندارید. 


    پیکربندی زمان اجرا

    رفتار این توابع، تحت تاثیر تنظیمات داخل php.ini می باشد. 

    نام توضیحات Default PHP Version
    date.timezone

    منطقه ی زمانی پیش فرض(از آن در تمام توابع تاریخ و زمان استفاده شده است).

    "" PHP 5.1
    date.default_latitude

    عرض جغرافیایی پیش فرض(استفاده شده توسط date-sunrise و date-sunset)

     "31.7667" PHP 5.0
    date.default_longitude

    طول جغرافیایی پیش فرض(استفاده شده توسط date_sunrise و date_sunset).

    "35.2333" PHP 5.0
    date.sunrise_zenith

    اوج طلوع خورشید(استفاده شده توسط date_sunrise و date_sunset).

    "90.83" PHP 5.0
    date.sunset_zenith

    اوج غروب خورشید(استفاده شده توسط date_sunrise و date_sunset).

    "90.83" PHP 5.0

     توابع Date و Time در php

    تابع توضیحات
    checkdate

    از تابع ()checkdate برای اعتبار سنجی یک تاریخ میلادی استفاده می شود. 

    date_add

    تابع ()date_add تعداد یا مقداری روز، ماه، سال، ساعت، دقیقه، و ثانیه را به یک تاریخ اضافه می کند. 

    date_create_from_format

    تابع ()date_create_from_format یک شیء DateTime جدید را که بر اساس یک فرمت مشخص، فرمت شده است را برمی گرداند. 

    date_create

    تابع ()date_create، یک شیء جدید DateTime را برمی گرداند. 

    date_date_set

    تابع ()date_date_set یک تاریخ جدید را ست می کند.

    date_default_timezone_get

    تابع ()date_default_timezone_get، منطقه ی زمانی پیش فرض استفاده شده توسط تمام توابع date/time درون اسکریپت مورد نظر را برمی گرداند. 

    date_default_timezone_set

    تابع ()date_default_timezone_set  منطقه ی زمانی پیش فرض را که در اسکریپت مورد نظر، به وسیله ی تمام توابع date/time مورد استفاده قرار می گیرد را، ست می کند.

    date_diff

    تابع ()date_diff اختلاف بین دو شیء DateTime را برمی گرداند. 

    date_format

    تابع ()date_format یک تاریخ را برمی گرداند که بر طبق یک فرمت مشخص شده، فرمت شده است.

    date_get_last_errors

    تابع ()date_get_last_errors اخطارها یا error های پیدا شده به هنگام تجزیه ی یک رشته ی تاریخ را برمی گرداند.

    date_interval_create_from_date_string

    Sets up a DateInterval from the relative parts of the string

    date_interval_format

    تابع ()date_interval_format یک مستعار از  DateInterval::format می باشد. 

    date_isodate_set

    تابع ()date_isodate_set، یک تاریخ را بر اساس استاندارد ISO 8601 و با استفاده از هفته ها و روزها(به جای استفاده از یک تاریخ مشخص) ست می کند.

    date_modify

    تابع ()date_modify  برچسب زمانی(timestamp)را تغییر می دهد.

    date_offset_get

    تابع ()date_offset_get ، اختلاف منطقه ی زمانی را برمی گرداند. 

    date_parse_from_format

    تابع ()date_parse_from_format یک آرایه ی انجمنی را به همراه اطلاعات دقیق درباره ی یک تاریخ مشخص و طبق یک فرمت مشخص، برمی گرداند. 

    date_parse

    تابع ()date_parse یک آرایه ی انجمنی را به همراه اطلاعات دقیق در مورد یک تاریخ مشخص،برمی گرداند. 

    date_sub

    تابع ()date_sub مقداری روز و ماه و سال و ساعت و دقیقه و ثانیه را از یک تاریخ ، کم می کند.

    date_sun_info

    تابع ()date_sun_info، یک آرایه را که دربردارنده ی اطلاعاتی درباره ی طلوع و غروب آفتاب و تاریک و روشن شدن(گرگ و میش)است را برای یک روز و مکان مشخص، برمی گرداند. 

    date_sunrise

    تابع ()date_sunrise، زمان طلوع خورشید را برای یک روز و محل مشخص، برمی گرداند. 

    date_sunset

    تابع ()date_sunset، زمان غروب خورشید را برای یک روز و مکان مشخص برمی گرداند. 

    date_time_set

    تابع ()date_time_set زمان را ست می کند. 

    date_timestamp_get

    تابع ()date_timestamp_get، برچسب زمانی یونیکس را برمی گرداند. 

    date_timestamp_set

    تابع ()date_timestamp_set، تاریخ و زمان را بر اساس یک برچسب زمان یونیکس، ست می کند. 

    date_timezone_get

    تابع ()date_timezone_get، منطقه ی زمانی را از یک شیء DateTime داده شده برمی گرداند.

    date_timezone_set

    تابع ()date_timezone_set، منطقه ی زمانی را برای یک شیء DateTime ست می کند. 

    date

    تابع ()date، یک تاریخ و زمان محلی را فرمت می کند و رشته ی تریخ فرمت شده را برمی گرداند. 

    getdate

    تابع، ()getdate ، اطلاعات تاریخ یا زمان را از یک برچسب زمانی یا تاریخ/زمان محلی، برمی گرداند.

    gettimeofday

    تابع ()gettimeofday زمان کنونی را برمی گرداند. 

    gmdate

    تابع ()gmdate، یک تاریخ و زمان GMT/UTC را فرمت می کند و رشته ی تاریخ فرمت شده را برمی گرداند. 

    gmmktime

    تابع ()gmmktime، برچسب زمان یونیکس را برای یک تاریخ GMT برمی گرداند.

    gmstrftime

    تابع ()gmstrftime یک زمان یا تاریخ GMT/UTC را بر اساس تنظیمات محلی، فرمت می کند. 

    idate

    این تابع یک زمان یا تاریخ محلی را بعنوان یک عدد صحیح فرمت می کند. 

    localtime

    تابع ()localtime زمان محلی را برمی گرداند. 

    microtime

    تابع ()microtime،برچسب زمان یونیکس را با میکروثانیه ها برمی گرداند. 

    mktime

    تابع ()gmmktime، برچسب زمان یونیکس را برای یک تاریخ برمی گرداند. 

    strftime

    تابع ()strftime، یک زمان یا تاریخ محلی را بر اساس تنظیمات محلی فرمت می کند. 

    strptime

    تابع ()strptime، یک زمان/تاریخ تولید شده به وسیله ی تابع strftime را تجزیه می کند. 

    strtotime

    تابع ()strotime یک تاریخ انگلیسی متنی را به برچسب زمان یونیکس(تعداد ثانیه ها از January 1 1970 00:00:00 GMT) تجزیه می کند.

    time

    تابع ()time زمان جاری را به صورت تعداد ثانیه ها از مبدا زمان یونیکس(January 1 1970 00:00:00 GMT) برمی گرداند. 

    timezone_abbreviations_list

    تابع ()timezone_abbreviations_list یک آرایه ی انجمنی را که دربردارنده ی dst و offset و نام timezone است را برمی گرداند. 

    timezone_identifiers_list

    تابع ()timezone_identifiers_list، یک آرایه ی اندیسی را که دربردارنده ی تمام مناطق زمانی تعریف شده است را برمی گرداند. 

    timezone_location_get

    تابع ()timezone_location_get اطلاعات مکانی را برای یک منطقه ی زمانی داده شده برمی گرداند. 

    timezone_name_from_ abbr

    تابع ()timezone_name_from_abbr از یک نام منطقه ی زمانی خلاصه شده، نام منطقه زمانی را برمی گرداند. 

    timezone_name_get

    تابع ()timezone_name_get نام منطقه ی زمانی مورد نظر را برمی گرداند.

    timezone_offset_get

    تابع ()timezone_offset_get یک اختلاف منطقه ی زمانی را از GMT برمی گرداند. 

    timezone_open

    تابع ()timezone_open یک شیء DateTimeZone جدید را ایجاد می کند. 

    timezone_transitions_get

    Returns all transitions for the timezone

    timezone_version_get

    تابع ()timezone_version_get در واقع ورژن db منطقه ی زمانی مورد نظر را برمی گرداند.

    ثابت های از پیش تعریف شده ی تاریخ و زمان در php

    ثابت ها توضیحات
    DATE_ATOM (Atom (example: 2005-08-15T16:13:03+0000
    DATE_COOKIE (HTTP Cookies (example: Sun, 14 Aug 2005 16:13:03 UTC
    DATE_ISO8601 (ISO-8601 (example: 2005-08-14T16:13:03+0000
    DATE_RFC822 (RFC 822 (example: Sun, 14 Aug 2005 16:13:03 UTC
    DATE_RFC850 (RFC 850 (example: Sunday, 14-Aug-05 16:13:03 UTC
    DATE_RFC1036 (RFC 1036 (example: Sunday, 14-Aug-05 16:13:03 UTC
    DATE_RFC1123 (RFC 1123 (example: Sun, 14 Aug 2005 16:13:03 UTC
    DATE_RFC2822 (RFC 2822 (Sun, 14 Aug 2005 16:13:03 +0000
    DATE_RSS (RSS (Sun, 14 Aug 2005 16:13:03 UTC
    DATE_W3C (World Wide Web Consortium (example: 2005-08-14T16:13:03+0000

  • توابع کار با آرایه ها در PHP

    آموزش کلیه توابع آرایه در PHP

    توابع آرایه، به شما اجازه ی دسترسی و دستکاری آرایه را می دهند. 

    از آرایه های ساده و آرایه های چند بعدی نیز پشتیبانی می شود. 


    نصب کردن این توابع

    توابع آرایه، جزئی از هسته ی php هستند. و نیازی نیست که این توابع را نصب کنید. 


    توابع آرایه در php5

    تابع توضیحات
    array این تابع یک آرایه را ایجاد می کند.
    array_change_key_case

    این تابع، تمام کلیدهای درون یک آرایه را به حروف کوچک یا حروف بزرگ تغییر می دهد. 

    array_chunk

    این تابع، یک آرایه را به صورت آرایه های جدید، تکه تکه می کند. 

    array_column

    تابع ()array_column، مقادیر را از یک ستون تکی در آرایه ی دربردارنده، برمی گرداند. 

    array_combine

    تابع ()array_combine، از دو آرایه استفاده می کند و یک آرایه را ایجاد می کند به طوری که، کلیدها از آرایه ی اول و مقادیر از آرایه ی دوم انتخاب می شوند. 

    array_count_values

    این تابع، تمام مقادیر یک آرایه را می شمارد. 

    array_diff

    تابع ()array_diff مقادیر دو یا چند آرایه را مقایسه می کند، و مابه التفاوت آنها را برمی گرداند.

    array_diff_assoc

    تابع ()array_diff_assoc کلید ها و مقادیر دو یا چند آرایه را مقایسه می کند و مابه التفاوت آنها را برمی گرداند.

    array_diff_key

    تابع ()array_diff_key، کلیدهای دو یا چند آرایه را مورد مقایسه قرار می دهد و اختلاف های آنها را برمی گرداند.

    array_diff_uassoc

    تابع ()array_diff_uassoc، کلیدها و مقادیر دو یا چند آرایه را مورد مقایسه قرار می دهد و تفاوت های آنها را برمی گرداند.

    array_diff_ukey

    تابع ()array_diff_ukey کلیدهای دو یا چند آرایه را مقایسه می کند و مابه التفاوت آنها را برمی گرداند.

    array_fill

    تابع ()array_fill یک آرایه را با مقادیری پر می کند.

    array_fill_keys

    تابع ()array_fill_keys با استفاده از کلید های تعریف شده، یک آرایه را با مقادیر مورد نظر پر می کند.

    array_filter

    تابع ()array_filter مقادیر یک آرایه را با استفاده از یک تابع فراخوانی(callback) فیلتر می کند.

    array_flip

    تابع ()array_flip در یک آرایه، تمام کلیدها را با مقادیر نسبت داده شده به آنها، جا به جا می کند.

    array_intersect

    تابع ()array_intersect مقادیر دو یا چند آرایه را مقایسه می کند و تطابق های آنها را برمی گرداند.

    array_intersect_assoc

    تابع ()array_intersect_assoc، کلید ها و مقادیر دو یا چند آرایه را مورد مقایسه قرار می دهد و تطابق ها را برمی گرداند.

    array_intersect_key

    تابع ()array_intersect_key کلید های دو یا چند آرایه را مقایسه می کند و تطابق های آنها را برمی گرداند.

    array_intersect_uassoc

    تابع ()array_intersect_uassoc کلیدها و مقایر دو یا چند آرایه را مقایسه می کند و تطابق ها را برمی گرداند.

    array_intersect_ukey

     تابع ()array_intersect_ukey کلیدهای دو یا چند آرایه را مقایسه می کند و تطابق های آنها را برمی گرداند.

    array_key_exists

    تابع ()array_key_exists در یک آرایه به دنبال یک کلید خاص می گردد و در صورتی که آن کلید موجود باشد، true را برمی گرداند و در صورتی که کلید موجود نباشد، false را برمی گرداند.

    array_keys

    تابع ()array_keys یک آرایه را برمی گرداند که شامل کلیدها است.

    array_map

    تابع ()array_map، هر مقدار از یک آرایه را به یک تابع تعریف شده توسط کاربر می فرستد و یک آرایه با مقادیر جدید داده شده توسط آن تابع را برمی گرداند. 

    array_merge

    تابع ()array_merge یک یا چند آرایه در یک آرایه ی دیگر ادغام می کند.

    array_merge_recursive

    تابع ()array_merge_recursive یک یا چند آرایه را در یک آرایه ی دیگر ادغام می کند.

    array_multisort

    تابع ()array_multisort یک آرایه ی منظم شده را برمی گرداند.

    array_pad

    تابع ()array_pad یک تعداد مشخص از عناصر را با یک مقدار مشخص شده، در یک آرایه، الحاق می کند.

    array_pop

    تابع ()array_pop، آخرین عنصر از یک آرایه را حذف می کند.

    array_product

    تابع ()array_product درواقع حاصلضرب عناصر یک آرایه را محاسبه کرده و برمی گرداند.

    array_push

    تابع ()array_push یک یا چند عنصر را به انتهای یک آرایه اضافه می کند.

    array_rand

    تابع ()array_rand یک کلید تصادفی از یک آرایه را برمی گرداند. و یا اینکه اگر شما مشخص کنید، یک آرایه از کلیدهای تصادفی را برمی گرداند.

    array_reduce

    تابع ()array_reduce مقادیر مورد نظر در یک آرایه را به یک تابع تعریف شده توسط کاربر می فرستد و یک رشته را برمی گرداند.

    array_replace

    تابع ()array_replace مقادیر اولین آرایه را با مقادیر آرایه های بعدی، جایگزین می کند.

    array_replace_recursive

    تابع ()array_replace_recursive مقادیر اولین آرایه را با مقادیر دیگر آرایه ها، به صورت بازگشتی، جایگزین می کند.

    array_reverse

    تابع ()array_reverse ترتیب عناصر یک آرایه را معکوس کرده و آن را برمی گرداند.

    array_search

    تابع ()array_search یک آرایه را برای یافتن یک مقدار، جستجو می کند و کلید آن را برمی گرداند

    array_shift

    تابع ()array_shift اولین عنصر از یک آرایه را حذف می کند و مقدار عنصر حذف شده را برمی گرداند.

    array_slice

    تابع ()array_slice قسمت های انتخابی از یک آرایه را برمی گرداند.

    array_splice

     تابع ()array_splice عناصر انتخاب شده از یک آرایه را حذف می کند و و آنها را با عناصر جدیدی جایگزین می کند.

    array_sum

     تابع ()array_sum  حاصلجمع تمام مقادیر درون یک آرایه را برمی گرداند.

    array_udiff

     تابع ()array_udiff مقادیر دو یا چند آرایه را مقایسه می کند و تفاوت آنها را برمی گرداند.

    array_udiff_assoc

     تابع ()array_udiff کلیدها و مقادیر دو یا چند آرایه را مورد مقایسه قرار می دهد و تفاوت یا به عبارت دیگر اختلاف آنها را برمی گرداند.

    array_udiff_uassoc

     تابع ()array_udiff_uassoc کلیدها و مقادیر دو یا چند آرایه را مقایسه می کند و تفاوت آنها را برمی گرداند.

    array_uintersect

     تابع ()array_uintersect مقادیر دو یا چند آرایه را مورد مقایسه قرار می دهد و تطابق ها را برمی گرداند.

    array_uintersect_assoc

     تابع ()array_uintersect_assoc ، کلیدها و مقادیر دو یا چند آرایه را مقایسه می کند و تطابق های آنها را برمی گرداند.

    array_uintersect_uassoc

     تابع ()array_uintersect_uassoc کلیدها و مقادیر دو یا چند آرایه را مقایسه می کند و تطابق های آنها را برمی گرداند.

    array_unique

     تابع ()array_unique در صورتی که یک مقدار دو بار تکرار شده باشد، یکی از آنها را حذف می کند.

    array_unshift

     تابع ()array_unshift یک عنصر جدید را به یک آرایه الحاق می کند. این مقادیر جدید در ابتدای آرایه ی مورد نظر قرار خواهند گرفت.

    array_values

     تابع ()array_values یک آرایه را برمی گرداند که دربردارنده ی تمام مقادیر یک آرایه می باشد.

    array_walk

     تابع ()array_walk هر عنصر آرایه را به یک تابع تعریف شده توسط کاربر، پاس می دهد.

    array_walk_recursive

     تابع ()array_walk_recursive هر عنصر یک آرایه را در یک تابع تعریف شده توسط کاربر وارد می کند.

    arsort

     تابع ()arsort یک آرایه ی انجمنی را به صورت نزولی مرتب می کند و این مرتب شدن بر اساس مقدارها می باشد.

    asort

     تابع ()asort یک آرایه ی انجمنی را به صورت صعودی و بر اساس مقادیر مرتب می کند.

    compact

     تابع ()compact از متغیرها و مقادیر آنها یک آرایه ایجاد می کند.

    count

     تابع ()count تعداد عناصر درون یک آرایه را برمی گرداند.

    current

     تابع ()current درواقع، مقدار عنصر جاری را در یک آرایه برمی گرداند.

    each

     تابع ()each، کلید و مقدار عنصر جاری را برمی گرداند و اشاره گر داخلی را به جلو می برد.

    end

     تابع ()end اشاره گر داخلی را به عنصر آخر آرایه می برد و آن را در خروجی برمی گرداند. 

    extract

    تابع ()extract متغیرهای یک آرایه را به جدول نمادهای محلی وارد می کند.

    in_array

    تابع ()in_array یک مقدار مشخص را در یک آرایه جستجو می کند.

    key

     تابع ()key کلید عنصر مورد نظر را از محل اشاره گر داخلی کنونی برمی گرداند.

    krsort

     تابع ()krsort یک آرایه ی انجمنی را به صورت نزولی و بر اساس کلیدها، مرتب می کند.

    ksort

    از تابع ()ksort برای مرتب کردن یک آرایه ی انجمنی به صورت صعودی و بر اساس کلید ها استفاده می شود.

    list

     از تابع ()list برای اختصاص دادن مقادیری به یک لیست از متغیرها استفاده می شود.

    natcasesort

     تابع ()natcasesort یک آرایه را با استفاده از الگوریتم natural order مرتب می کند.

    natsort

     تابع ()natsort یک آرایه را با استفاده از الگوریتم "natural order" مرتب می کند.

    next

     تابع ()next اشاره گر داخلی را به جلو می برد و عنصر بعدی آرایه را بعنوان خروجی برمی گرداند.

    pos

     یک نام مستعار از تابع current است. 

    prev

     تابع ()prev اشاره گر داخلی را به عنصر قبلی در آرایه می برد و آن را بعنوان خروجی برمی گرداند.

    range

     تابع ()range یک آرایه ایجاد می کند که دربردارنده ی یک محدوده از عناصر است.

    reset

     تابع ()reset اشاره گر داخلی تابع مورد نظر را به اولین عنصر آرایه منتقل می کند.

    rsort

     تابع ()rsort یک آرایه ی اندیسی را به صورت نزولی مرتب می کند. 

    shuffle

     تابع ()shuffle عناصر آرایه ی مورد نظر را به صورت تصادفی مرتب می کند. 

    sizeof

     یک نام مستعار تابع count است. 

    sort

     تابع ()sort یک آرایه ی اندیسی را به صورت صعودی مرتب می کند.

    uasort

     تابع ()uasort مقادیر یک آرایه را با استفاده از یک تابع تعریف شده توسط کاربر، مورد مقایسه قرار می دهد.

    uksort

     تابع ()uksort یک آرایه را بر اساس کلیدها، و با استفاده از یک تابع مقایسه ی تعریف شده توسط کاربر، مورد مقایسه قرار می دهد.

    usort

    تابع ()usort یک آرایه را با استفاده از یک تابع مقایسه ی تعریف شده توسط کاربر، مرتب می کند.

  • توابع کار با پوشه ها در PHP

    مقدمه ی توابع کار با پوشه ها (Directory) در PHP

    توابع کار با پوشه ها یا Directory به شما امکان می دهند تا اطلاعاتی را در مورد پوشه ها و محتوای آنها به دست بیاورید. 


    نحوه  ی نصب کردن

    توابع دایرکتوری در phpجزئی از هسته ی php هستند و نیازی نیست تا آنها را نصب کنید. 


    توابع دایرکتوری در PHP5

    تابع توضیحات
    chdir

    تابع ()chdir دایرکتوری کنونی را تغییر می دهد.

    chroot

    تابع ()chroot ، دایرکتوری ریشه ی پروسه ی کنونی را به پارامتر directory تغییر می دهد و دایرکتوری کنونی که در حال کار بر روی آن هستیم را به "/" تغییر می دهد. 

    closedir

    تابع ()closedir استعمال دایرکتوری را پایان می دهد.

    dir

    تابع ()dir یک نمونه از کلاس Directory را برمی گرداند.

    getcwd

    تابع ()getcwd دایرکتوری کنونی مورد استفاده را برمی گرداند.

    opendir

    تابع ()opendir یک دایرکتوری را باز می کند. 

    readdir

    تابع ()readdir، نام ورودی بعدی در یک دایرکتوری را برمی گرداند. 

    rewinddir

    تابع ()rewinddir یک دایرکتوری ایجاد شده به وسیله ی تابع  opendir را ریست می کند. 

    scandir

    تابع ()scandir یک آرایه را برمی گرداند که دربردارنده ی فایل ها ودایرکتوری هایی از یک دایرکتوری مشخص است. 

  • توابع کار با تقویم در PHP

    مقدمه ی توابع تقویم در PHP

    افزونه ی calendar شامل توابعی است که تبدیل فرمت های مختلف تقویم را به یکدیگر، ساده می کنند.

    این توابع، بر اساس شمارش روز جولیان بنا شده اند. این شمارش از روز اول سال 4713 قبل از میلاد شروع می شود. 

    نکته: برای تبدیل بین فرمت های مختلف تقویم، شما ابتدا باید آن را به شمارش روز جولیان تبدیل کنید و سپس آن را به تقویم مورد نظر خود در بیاورید. 

    نکته: شمارش روز جولیان، همانند تقویم جولیان نمی باشد. 


    نحوه نصب کردن

    برای اینکه این توابع کار کنند، شما باید عبارت  enable-calendar-- را فعال کنید. 

    نسخه ی ویندوز PHP، به صورت داخلی، از این افزونه پشتیبانی می کند. 


    توابع تقویم در PHP5

    تابع توضیحات
    cal_days_in_month

    تابع ()cal_days_in_month، تعداد روزهای یک ماه را برای یک سال و تقوم مشخص، برمی گرداند.

    cal_from_jd

    تابع ()cal_from_jd، یک شمارش روز جولیان را به یک تاریخ در یک تقویم مشخص، تبدیل می کند.

    cal_info

    تابع ()cal_info اطلاعاتی را درباره ی یک تقویم مشخص شده برمی گرداند.

    cal_to_jd

    تابع ()cal_to_jd یک تاریخ در یک تقویم مشخص را به شمارش روز جولیان تبدیل می کند.

    easter_date

    تابع ()easter_date برچسب زمان یونیکس(Unix timestamp) را برای نیمه شب عید پاک برای یک سال مشخص را برمی گرداند.

    easter_days

    تابع ()easter_days تعداد روزهای بعد از 21 مارس که روز عید پاک در سال داده شده می باشد را برمی گرداند.

    frenchtojd

    تابع ()frenchtojd یک تاریخ را از تقویم جمهوری فرانسه به شمارش روز جولیان تبدیل می کند.

    gregoriantojd

    تابع ()gregoriantojd یک تاریخ از تقویم میلادی را به یک شمارش روز جولیان تبدیل می کند.

    jddayofweek

    تابع ()jddayofweek روز از هفته را برمی گرداند. 

    jdmonthname

    تابع ()jdmonthname ، نام ماه را برمی گرداند.

    jdtofrench

    تابع ()jdtofrench یک شمارش روز جولیان را به تاریخ جمهوری فرانسه تبدیل می کند.

    jdtogregorian

    تابع ()jdtogregorian، شمارش روز جولیان را به تاریخ میلادی تبدیل می کند.

    jdtojewish

    تابع ()jdtojewish یک شمارش روز جولیان را به تاریخ یهودی(jewish) برمی گرداند.

    jdtojulian

    تابع ()jdtojulian یک شمارش روز جولیان را به یک تاریخ جولیان تبدیل می کند. 

    jdtounix

    تابع ()jdtounix یک شمارش روز جولیان را به برچسب زمان یونیکس تبدیل می کند. 

    jewishtojd

    تابع ()jewishtojd، یک تاریخ از تقویم یهودی را به شمارش روز جولیان تبدل می کند.

    juliantojd

    تابع ()juliantojd، یک تاریخ را از تقویم جولیان، به یک شمارش روز جولیان تبدیل می کند. 

    unixtojd

    تابع ()unixtojd،  برچسب زمان یونیکس را به یک شمارش روز جولیان تبدیل می کند.

    ثابت های تقویم از پیش تعریف شده در PHP5

    ثابت نوع ورژن php
    CAL_GREGORIAN Integer PHP 4
    CAL_JULIAN Integer PHP 4
    CAL_JEWISH Integer PHP 4
    CAL_FRENCH Integer PHP 4
    CAL_NUM_CALS Integer PHP 4
    CAL_DOW_DAYNO Integer PHP 4
    CAL_DOW_SHORT Integer PHP 4
    CAL_DOW_LONG Integer PHP 4
    CAL_MONTH_GREGORIAN_SHORT Integer PHP 4
    CAL_MONTH_GREGORIAN_LONG Integer PHP 4
    CAL_MONTH_JULIAN_SHORT Integer PHP 4
    CAL_MONTH_JULIAN_LONG Integer PHP 4
    CAL_MONTH_JEWISH Integer PHP 4
    CAL_MONTH_FRENCH Integer PHP 4
    CAL_EASTER_DEFAULT Integer PHP 4.3
    CAL_EASTER_ROMAN Integer PHP 4.3
    CAL_EASTER_ALWAYS_GREGORIAN Integer PHP 4.3
    CAL_EASTER_ALWAYS_JULIAN Integer PHP 4.3
    CAL_JEWISH_ADD_ALAFIM_GERESH Integer PHP 5.0
    CAL_JEWISH_ADD_ALAFIM Integer PHP 5.0
    CAL_JEWISH_ADD_GERESHAYIM Integer PHP 5.0

  • توابع کار با فایل ها در PHP

    مقدمه ی توابع کار با فایل ها در PHP یا (Filesystem)

    توابع مربوط به فایل ها در PHPبه شما امکان می دهند تا filesystem را دستکاری کرده و تغییر دهید. 


    نحوه نصب کردن

    توابع filesystem جزئی از هسته ی php هستند. و نیازی نیست تا برای استفاده از این توابع آنها را نصب کنید. 


    توابع filesystem در php5

    تابع توضیحات
    basename

     تابع ()basename، نام فایل مورد نظر را از یک مسیر، برمی گرداند. 

    chgrp

     تابع ()chgrp درواقع usergroup را از فایل مشخص شده تغییر می دهد.

    chmod

     تابع ()chmod دسترسی های یک فایل مشخص را تغییر می دهد. 

    chown

     تابع ()chown مالکیت یک فایل مشخص را تغییر می دهد.

    clearstatcache

     تابع ()clearstatcatche درواقع وضعیت کش شدن فایل را مشخص می کند. 

    copy

     تابع ()copy یک فایل را کپی می کند. 

    delete

     به جای آن به تابع unlink یا unset مراجعه کنید. 

    dirname

     تابع ()dirname، نام دایرکتوری را از یک مسیر برمی گرداند. 

    disk_free_space

     تابع ()disk_free_space از یک دایرکتوری مشخص، مقدار فضای خالی را به بایت برمی گرداند. 

    disk_total_space

     تابع ()disk_total_space فضای کلی یک دایرکتوری مشخص را با بایت برمی گرداند. 

    diskfreespace

     یک نام مستعار تابع disk_free_space است. 

    fclose

     تابع ()fclose یک فایل باز شده را می بندد. 

    feof

     تابع ()feof بررسی می کند که آیا به EOF رسیده ایم یا نه.

    fflush

     تابع ()fflush تمام خروجی بافر شده را دریک فایل باز شده(open) می نویسد. 

    fgetc

     تابع ()fgetc یک کاراکتر تکی از یک فایل باز شده را برمی گرداند.

    fgetcsv

     تابع ()fgetcsv یک خط از داده های یک فایل باز شده ی csv را تجزیه می کند. 

    fgets

     تابع ()fgets یک خط از یک فایل باز شده را برمی گرداند. 

    fgetss

     تابع ()fgetss از یک فایل باز شده، یک خط را برمی گرداند به طوری که تگ های HTML و PHP آن خذف شده اند. 

    file

     تابع ()file یک فایل را درون یک آرایه، می خواند. 

    file_exists

     تابع ()file_exists بررسی می کند که آیا یک فایل یا یک دایرکتوری، موجود است یا نه. 

    file_get_contents

     تابع ()file_get_contents یک فایل را در یک رشته می خواند. 

    file_put_contents

     تابع ()file_put_contents یک رشته را درون یک فایل می نویسد. 

    fileatime

     تابع ()fileatime زمان آخرین دسترسی به یک فایل مشخص را برمی گرداند. 

    filectime

     تابع ()filectime آخرین زمانی که یک فایل مشخص مورد تغییر واقع شده است را برمی گرداند. 

    filegroup

     تابع ()filegroup از یک فایل مورد نظر، group ID را برمی گرداند.

    fileinode

     تابع ()fileinode مقدار inode از یک فایل مورد نظر را برمی گرداند. 

    filemtime

     تابع ()filemtime آخرین زمانی که محتوای فایل مورد نظر تغییر کرده است را برمی گرداند.

    fileowner

     تابع ()fileowner درواقع user ID(مالک) را  از یک فایل مشخص برمی گرداند. 

    fileperms

     تابع ()fileperms مجوزهای(permissions) یک فایل یا دایرکتوری را برمی گرداند.

    filesize

     تابع ()filesize سایز یک فایل مشخص را برمی گرداند. 

    filetype

     تابع ()filetype نوع فایل را از یک فایل یا دایرکتوری مشخص برمی گرداند. 

    flock

     تابع ()flock یک فایل را قفل کرده و یا آزاد می کند.

    fnmatch

     تابع ()fnmatch نام یک فایل یا رشته را با استفاده از یک الگوی(pattern) مشخص، مورد تطابق قرار می دهد. 

    fopen

     یک فایل یا url را باز می کند. 

    fpassthru

     تابع ()fpassthru تمام داده ها را از مکان کنونی، در یک فایل باز شده می خواند تا هنگامی که به پایان فایل(EOF) برسد و سپس نتیجه را در خروجی می نویسد. 

    fputcsv

     تابع ()fputcsv، یک خط داده را به فرمت CSV در می آورد و آن را در یک فایل باز، می نویسد. 

    fputs

     این تابع یک نام مستعار از تابع fwrite است. 

    fread

     تابع ()fread عمل خواندن را از یک فایل باز شده انجام می دهد.

    fscanf

    Parses input from an open file according to a specified format

    fseek

     تابع ()fseek در یک فایل باز شده پویش می کند. 

    fstat

     تابع ()fstat اطلاعاتی را درباره ی یک فایل باز شده برمی گرداند. 

    ftell

     تابع ()ftell  مکان کنونی(current position) را در یک فایل باز شده، برمی گرداند.

    ftruncate

     تابع ()ftruncate یک فایل باز شده را به یک طول مشخص کوتاه می کند.

    fwrite

     تابع ()fwrite در درون یک فایل باز شده، عمل نوشتن را انجام می دهد. 

    glob

     تابع ()glob یک آرایه از نام فایل ها یا دایرکتوری هایی که با یک الگوی مشخص تطابق دارند را برمی گرداند. 

    is_dir

     تابع ()is_dir بررسی می کند که آیا فایل مشخص شده یک دایرکتوری است یا نه. 

    is_executable

     تابع ()is_executable بررسی می کند که آیا فایل مشخص شده قابل اجرا(executable) است یا نه. 

    is_file

     تابع ()is_file بررسی می کند که آیا یک فایل مشخص، یک فایل حقیقی است یا نه. 

    is_link

     تابع ()is_link بررسی می کند که آیا فایل مشخص شده یک لینک است یا نه. 

    is_readable

     تابع ()is_readable بررسی می کند که آیا فایل مشخص شده قابل خواندن است یا نه. 

    is_uploaded_file

     تابع ()is_uploaded_file بررسی می کند که آیا فایل مورد نظر، به وسیله ی HTTP POST آپلود شده است یا نه. 

    is_writable

     تابع ()is_writeable بررسی می کند که آیا فایل مورد نظر قابل خواندن است ی نه. 

    is_writeable

     یک مستعار از تابع is_writable است.

    lchgrp

    Changes group ownership of symlink

    lchown

    Changes user ownership of symlink

    link

    Creates a hard link

    linkinfo

     تابع ()linkinfo اطلاعاتی را درباره ی یک hard link برمی گرداند. 

    lstat

     تابع ()lstat اطلاعاتی را درباره ی یک فایل یا یک لینک سمبلیک برمی گرداند. 

    mkdir

     تابع ()mkdir یک دایرکتوری را ایجاد می کند. 

    move_uploaded_file

     تابع ()move_uploaded_file یک فایل آپلود شده را به یک مکان جدید حرکت می دهد. 

    parse_ini_file

     تابع ()parse_ini_file یک فایل پیکربندی(ini) را تجزیه کرده و تنظیمات درون آن را به صورت یک آرایه برمی گرداند. 

    parse_ini_string

     یک رشته ی پیکربندی را تجزیه می کند. 

    pathinfo

     تابع ()pathinfo  یک آرایه را برمی گرداند که دربردارنده ی اطلاعاتی درباره ی یک مسیر(path)است. 

    pclose

     تابع ()pclose یک pipe را که به وسیله ی popen باز شده است را می بندد. 

    popen

     تابع ()popen یک pipe را که در برنامه ای که در پارامتر command مشخص شده است را باز می کند. 

    readfile

     تابع ()readfile یک فایل را می خواند و آن را در خروجی می نویسد. 

    readlink

     تابع ()readlink در واقع target مورد نظر از یک لینک سمبلیک را برمی گرداند. 

    realpath

     تابع ()realpath نام مسیر(phathname) مطلق را برمی گرداند. 

    realpath_cache_get

    Returns realpath cache entries

    realpath_cache_size

    Returns realpath cache size

    rename

     تابع ()rename یک فایل یا دایرکتوری را تغییر نام می دهد. 

    rewind

     تابع ()rewind مکان اشاره گر فایل را به ابتدای فایل برمی گرداند. 

    rmdir

     تابع ()rmdir یک دایرکتوری خالی را حذف می کند. 

    set_file_buffer

     تابع ()set_file_buffer اندازه ی بافر یک فایل باز شده را ست می کند. 

    stat

     تابع ()stat اطلاعاتی را درباره ی یک فایل برمی گرداند. 

    symlink

     تابع ()symlink از target موجود به وسیله ی link مشخص شده، یک لینک سمبلیک را ایجاد می کند. 

    tempnam

     تابع ()tempnam یک فایل موقت را با یک نام یکتا در یک دایرکتوری مشخص ایجاد می کند. 

    tmpfile

     تابع ()tmpfile یک فایل موقت را با یک نام یکتا در حالت read-write یا +w، ایجاد می کند. 

    touch

     تابع ()touch زمان دسترسی(access) و زمان اصلاح(modification) فایل مورد نظر را ست می کند. 

    umask

     تابع ()umask دسترسی ها را برای فایل ها تغییر می دهد. 

    unlink

    تابع ()unlink یک فایل را حذف می کند.

  • توابع کار با فیلترها در PHP

    مقدمه ی توابع فیلتر

    از توابع فیلتر، برای اعتبار سنجی و فیلتر کردن داده ها استفاده می شود. 


    نحوه نصب کردن

    از PHP 5.2.0 به بعد، توابع فیلتر به طور پیش فرض فعال هستند. و نیازی به نصب این توابع نمی باشد. 


    توابع فیلتر در PHP5

    تابع توضیحات
    filter_has_var

    تابع ()filter_has_var بررسی می کند که آیا یک نوع input مشخص موجود است یا نه. 

    filter_id

    تابع ()filter_id در واقع ID فیلتر یک نام فیلتر را برمی گرداند. 

    filter_input

    تابع ()filter_input  یک متغیر خارجی(بعنوان مثال یک فرم ورودی) را گرفته و به طور اختیاری آن را فیلتر می کند. 

    filter_input_array

    تابع ()filter_input_array متغیرهای خارجی(مثل input فرم) را گرفته و به طور اختیاری آنها را فیلتر می کند. 

    filter_list

    تابع ()filter_list لیستی از تمام فیلترهای پشتیبانی شده را برمی گرداند. 

    filter_var_array

    تابع ()filter_var_array چند متغیر را گرفته و به طور اختیاری آنها را فیلتر می کند.

    filter_var

    تابع ()filter_var به وسیله ی یک فیلتر مشخص شده، یک متغیر را فیلتر می کند. 

    ثابت های از پیش تعریف شده ی فیلتر در php

    ثابت ID توضیحات
    FILTER_VALIDATE_BOOLEAN 258

    فیلتر FILTER_VALIDATE_BOOLEAN یک مقدار را بعنوان یک مقدار بولی، فیلتر می کند.

    FILTER_VALIDATE_EMAIL 274

    فیلتر FILTER_VALIDATE_EMAIL یک آدرس ایمیل را اعتبار سنجی می کند.

    FILTER_VALIDATE_FLOAT 259

    فیلتر FILTER_VALIDATE_FLOAT متغیرها را بعنوان یک عدد float(عدد با ممیز شناور) فیلتر می کند. 

    FILTER_VALIDATE_INT 257

    از تابع FILTER_VALIDATE_INT برای اعتبار سنجی مقدار یک عدد صحیح(integer) استفاده می شود. 

    FILTER_VALIDATE_IP 275

    فیلتر FILTER_VALIDATE_IP یک آدرس IP را اعتبار سنجی می کند. 

    FILTER_VALIDATE_REGEXP 272

    فیلتر FILTER_VALIDATE_REGEXP یک عبارت منظم را فیلتر می کند. 

    FILTER_VALIDATE_URL 273 

    فیلتر FILTER_VALIDATE_URL درواقع یک URL را اعتبار سنجی می کند. 

    FILTER_SANITIZE_EMAIL 517

    فیلتر FILTER_SANITIZE_EMAIL تمام کاراکترهای غیر مجاز را از یک آدرس ایمیل حذف می کند. 

    FILTER_SANITIZE_ENCODED 514

    فیلتر FILTER_SANITIZE_ENCODED کاراکترهای خاص را رمزگذاری کرده و یا حذف می نماید. 

    FILTER_SANITIZE_MAGIC_QUOTES 521

    فیلتر FILTER_SANITIZE_MAGIC_QUOTES تابع addslashes را بر روی یک رشته اجرا می کند. 

    FILTER_SANITIZE_NUMBER_FLOAT 520

    فیلتر FILTER_SANITIZE_NUMBER_FLOAT تمام کاراکترهای غیرمجاز را از یک عدد float حذف می کند. 

    FILTER_SANITIZE_NUMBER_INT 519

    فیلتر FILTER_SANITIZE_NUMBER_INT تمام کاراکترهای غیرمجاز را از یک عدد حذف می کند. 

    FILTER_SANITIZE_SPECIAL_CHARS 515

    فیلتر FILTER_SANITIZE_SPECIAL_CHARS کاراکترهای خاص را حذف می کند. 

    FILTER_SANITIZE_FULL_SPECIAL_CHARS    
    FILTER_SANITIZE_STRING 513

    فیلتر FILTER_SANITIZE_STRING تگ ها را حذف می کند و همچنین کاراکترهای خاص را از یک رشته حذف کرده یا رمزگذاری می کند. 

    FILTER_SANITIZE_STRIPPED 513

    فیلتر FILTER_SANITIZE_STRIPPED کاراکترهای ناخواسته را حذف کرده و یا رمزگذاری می کند. 

    FILTER_SANITIZE_URL 518

    فیلتر FILTER_SANITIZE_URL تمام کاراکترهای غیرمجاز را از یک رشته حذف می کند. 

    FILTER_UNSAFE_RAW 516

    فیلتر FILTER_UNSAFE_RAW کاری خاصی انجام نمی دهد و یا کاراکترهای خاص را رمز گذاری کرده یا خذف می کند. 

    FILTER_CALLBACK 1024

    فیلتر FILTER_CALLBACK یک تابع تعریف شده توسط کاربر را فراخوانی کرده تا مقدار مورد نظر را فیلتر نماید. 

  • ثابت ها در PHP

    ثابت ها مانند متغیرها هستند با این تفاوت که یکبار آنها را تعریف می کنید و دیگر نمی توانید آنها را تغییر دهید.


    ثابت ها (Constant) در PHP

    Wiki

    یک ثابت، در واقع یک شناسه یا یک نام برای یک مقدار ساده است. در طول اسکریبت، مقدار ثابت نمی تواند تغییر نماید.

    نام یک ثابت باید با یک حرف یا یک "_" آغاز شود. به علامت $ قبل از نام ثابت نیازی نیست.

    توجه: برخلاف متغیرها، یک ثابت بطور اتوماتیک در طول تمام اسکریبت عمومی است.


    تنظیم یک ثابت در PHP

    Wiki

    با استفاده از تابع ()define، می توانید یک ثابت را تنظیم نمایید. این تابع سه پارامتر می گیرد: پارامتر اول، نام ثابت را تعیین می کند، پارامتر دوم، مقدار ثابت و پارامتر اختیاری سوم، تعیین می کند که آیا نام ثابت به حروف بزرگ و کوچک حساس است یا خیر.  (مقدار پیشفرض false است به این معنی که نسبت به حروف کوچک و بزرگ حساس است)

    در مثال زیر، یک ثابت با نام GREETING و مقدار "!Welcome to Beyamooz.com" تعریف شده است:

    مثال (ثابت ها در PHP)

    <?php
    define("GREETING", "Welcome to Beyamooz.com!");
    echo GREETING;
    ?>

    خروجی کد بالا:

    Welcome to Beyamooz.com!

    در مثال زیر، نام ثابت به حروف بزرگ و کوچک حساس نیست (greeting و GREETING یکسان است):

    مثال (ثابت ها در PHP)

    <?php
    define("GREETING", "Welcome to Beyamooz.com!", true);
    echo greeting;
    echo GREETING;
    ?>

    خروجی کد بالا:

    Welcome to Beyamooz.com!
    Welcome to Beyamooz.com!

    برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

  • جستجوی پیشرفته در ajax

    با استفاده از AJAX، می توانید جستجوهای کاربر پسندتر و تعاملی تری ایجاد نمایید.


    آموزش ساخت جستجوی پیشرفته با استفاده از AJAX در PHP

    Wiki

    مزیت های جستجوی پیشرفته در مقایسه با جستجوی سنتی:

    • در لحظه ی تایپ، نتیجه نمایش داده خواهد شد.
    • اگر تایپ کردن را ادامه دهید، نتیجه محدود تر می شود.
    • اگر نتیجه بیش از حد محدود شده است، می توانید کاراکترهای پایانی را پاک کنید تا نتیجه مناسب تری داشته باشید.

    مثال زیر، نحوه ساخت یک جستجوی پیشرفته را نشان می دهد، نتیجه در لحظه ای که تایپ می کنید، نمایش داده می شود:

    مثال (جستجوی پیشرفته در ajax)

    جستجوی پیشرفته:
     

    نتیجه جستجوی مثال بالا، با استفاده از یک سند XML بنام "links.xml" تولید می شود. بدلیل اینکه می خواستیم یک مثال ساده و کوچک داشته باشیم، تنها شش نتیجه قابل نمایش است.


    توضیح مثال - صفحه HTML

    Wiki

    زمانی که کاربر در کادر ورودی بالا، کلمه ای را تایپ کند، تابع "()showResult" اجرا می شود. این تابع زمانی فراخوانی می شود که رویداد "onkeyup" فیلد ورودی رخ دهد:

    <html>
    <head>
    <script>
    function showResult(str)
    {
    if (str.length==0)
      {
      document.getElementById("livesearch").innerHTML="";
      document.getElementById("livesearch").style.border="0px";
      return;
      }
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("livesearch").innerHTML=xmlhttp.responseText;
        document.getElementById("livesearch").style.border="1px solid #A5ACB2";
        }
      }
    xmlhttp.open("GET","livesearch.php?q="+str,true);
    xmlhttp.send();
    }
    </script>
    </head>
    <body>

    <form>
    <p>جستجوی پیشرفته:</p>
    <input type="text" size="30" onkeyup="showResult(this.value)">
    <div id="livesearch"></div>
    </form>

    </body>
    </html>

    توضیح کد Javascript:

    اگر فیلد ورودی خالی باشد (str.length==0)، محتوای عنصر با شناسه "livesearch" خالی و خصوصیت border آن با مقدار "0px" تنظیم می شود و در نهایت، از تابع خارج می شود.

    اگر فیلد ورودی خالی نباشد، تابع ()showResult کارهای زیر را انجام می دهد:

    • شیء XMLHttpRequest ایجاد می شود.
    • زمانی که پاسخ سرور آماده باشد، یک تابع ایجاد و اجرا می شود. (وظیفه این تابع این است که پاسخ دریافت شده از سرور را در عنصر با شناسه "livesearch" قرار دهد)
    • درخواست یک فایل به سرور ارسال می شود.
    • توجه داشته باشید که یک پارامتر (q) به URL اضافه شده است (با محتوای فیلد ورودی تنظیم می شود)

    فایل PHP

    Wiki

    فایلی که توسط کد JavaScriptبالا صدا زده می شود، یک فایل PHP بنام "livesearch.php" است.

    در فایل "livesearch.php"، یک سند XML بنام "links.xml" بارگذاری می شود. در این فایل یک جستجو انجام شده و نتیجه بصورت HTML برگردانده می شود:

    <?php
    $xmlDoc=new DOMDocument();
    $xmlDoc->load("links.xml");

    $x=$xmlDoc->getElementsByTagName('link');

    //get the q parameter from URL
    $q=$_GET["q"];

    //lookup all links from the xml file if length of q>0
    if (strlen($q)>0)
    {
    $hint="";
    for($i=0; $i<($x->length); $i++)
      {
      $y=$x->item($i)->getElementsByTagName('title');
      $z=$x->item($i)->getElementsByTagName('url');
      if ($y->item(0)->nodeType==1)
        {
        //find a link matching the search text
        if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q))
          {
          if ($hint=="")
            {
            $hint="<a href='" .
            $z->item(0)->childNodes->item(0)->nodeValue .
            "' target='_blank'>" .
            $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
            }
          else
            {
            $hint=$hint . "<br /><a href='" .
            $z->item(0)->childNodes->item(0)->nodeValue .
            "' target='_blank'>" .
            $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
            }
          }
        }
      }
    }

    // Set output to "no suggestion" if no hint were found
    // or to the correct values
    if ($hint=="")
      {
      $response="no suggestion";
      }
    else
      {
      $response=$hint;
      }

    //output the response
    echo $response;
    ?>

    توضیح: زمانی که درخواست از JavaScript به فایل PHP ارسال می شود، کارهای زیر اتفاق می افتد:

    1. یک شیء XML DOM ایجاد و فایل "links.xml" درون آن load می شود.
    2. تمام عناصر <title> که با نام ارسال شده از JavaScript تطابق داشته باشند، پیدا می شود.
    3. URL صحیح بهمراه عنوان لینک در متغیر "response$" ذخیره می شود. اگر بیشتر از یک مورد پیدا شود، با استفاده از تگ <br /> آنها را پشت سر هم در متغیر ذکر شده ذخیره می کنیم.
    4. اگر هیچ موردی پیدا نشود متغیر "response$" با مقدار "no suggestion" تنظیم می شود.

    برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

  • جملات شرطی در PHP

    جملات شرطی

    Wiki

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

    انواع جملات شرطی در PHP:

    1. ... if:هنگامی که شرط درست باشد، دستور مقابل if اجرا می شود.
    2. if... else: اگر شرط درست باشد دستور مقابل if وگرنه دستور مقابل else اجرا می شود.
    3. if... elseif... else: برای اجرای یک دستور از بین چند دستور کاربرد دارد.
    4. PHP Switch: برای انتخاب و اجرای یک دستور از بین چند دستور استفاده می شود.

     دستور if

    Wiki

    نحوه استفاده:

    if (Condition)
    {
    Statement 1
    Statement 2
    ...
    }

    دستور(Statement) مورد نظر تنها موقعی اجرا می شود که شرط(Condition) برقرار باشد، یعنی مقدار آن برابر true باشد.

    مثال: در کد PHP زیر اگر امروز جمعه باشد، جمله "Have a nice weekend" چاپ می شود.

    <html>
    <body>

    <?php
    $d=date("D");
    if ($d=="Fri") echo "Have a nice weekend!";
    ?>

    </body>
    </html>


    دستور if...else

    Wiki

     این دستور که در واقع می تواند کامل کننده if باشد، تعیین می کند که اگر شرط درست نبود چه دستوری اجرا شود.

    نحوه استفاده:

    if (condition)
      code to be executed if condition is true;
    else
      code to be executed if condition is false;

    مثال: در مثال زیر اگر امروز جمعه باشد جمله "Have a nice weekend" چاپ می شود وگرنه جمله "Have a nice day" چاپ خواهد شد.

    <html>
    <body>

    <?php
    $d=date("D");
    if ($d=="Fri")
      echo "Have a nice weekend!";
    else
      echo "Have a nice day!";
    ?>

    </body>
    </html>


    دستور if...elseif....else

    Wiki

    همان طور که در بالا گفته شد این نوع if برای اجرای یک دستور از بین چند دستور کاربرد دارد.

    نحوه استفاده:

    if (condition)
      code to be executed if condition is true;
    elseif (condition)
      code to be executed if condition is true;
    else
      code to be executed if condition is false;

     مثال:در مثال زیر اگر امروز جمعه باشد جمله "Have a nice weekend" چاپ می شود و اگر یکشنبه بود جمله "Have a nice Sunday" چاپ می شود وگرنه جمله "Have a nice day" چاپ خواهد شد.

    <html>
    <body>

    <?php
    $d=date("D");
    if ($d=="Fri")
      echo "Have a nice weekend!";
    elseif ($d=="Sun")
      echo "Have a nice Sunday!";
    else
      echo "Have a nice day!";
    ?>

    </body>
    </html>


      توجه: نوع دیگر اجرای دستورات کنترلی(مثال):

    if ($i == 1):
        echo "i is 1";
        $i+=2;
    elseif ($i == 2):
        echo "i is 2";
        $i+=3;
    else:
        echo "is not 1 or 2";
        $i-=1;
    endif;


    برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.

صفحه2 از5