VIP برنامه نویسی Client Side

وضعیت
موضوع بسته شده است.

☾♔TALAYEH_A♔☽

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2017/05/18
ارسالی ها
35,488
امتیاز واکنش
104,218
امتیاز
1,376
تاریخچه انتشار
جدول راهنما
رنگ مفهوم وضعیت توسعه
قرمز نسخهٔ قدیمی بدون توسعه
زرد نسخهٔ پایدار تنها به‌روزرسانی‌های امنیتی
سبز نسخهٔ پایدار به‌روزرسانی فعال
آبی نسخهٔ آینده امکانات جدید
 
  • پیشنهادات
  • ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    نسخه تاریخ انتشار تاریخ اتمام پشتیبانی[۲۲] یادداشت‌ها
    ۱٫۰
    ۱۹۹۵/۰۶/۰۸
    این نسخه به صورت رسمی "Personal Home Page Tools" یا "PHP Tools" نامیده شد. کلمهٔ پی‌اچ‌پی اولین بار در اینجا به کار رفت.[۴]
    ۲٫۰ ۱۹۹۷/۱۱/۰۱

    ۳٫۰ ۱۹۹۸/۰۶/۰۶ ۲۰۰۰/۱۰/۲۰ توسعه‌دهندگان از یک به چند نفر افزایش یافتند. زیو سوراسکی و اندی گاتمنس هستهٔ این نسخه را بازنویسی کردند.[۴]
    ۴٫۰ ۲۰۰۰/۰۵/۲۲ ۲۰۰۱/۰۱/۲۳ سیستم دومرحله‌ای تجزیه/اجرای پیشرفته تحت عنوان موتور زند به این نسخه اضافه شد.[۲۳]
    ۴٫۱ ۲۰۰۱/۱۲/۱۰ ۲۰۰۲/۰۳/۱۲ متغیرهای فوقِ سراسری(Superglobal) معرفی شدند. (GET، $_POST، $_SESSION و…)[۲۳]
    ۴٫۲ ۲۰۰۲/۰۴/۲۲ ۲۰۰۲/۰۹/۰۶ تنظیم register_globals به صورت پیش‌فرض غیرفعال شد. با این تغییر اطلاعاتی که از طریق شبکه ارسال می‌شدند، دیگر به‌طور مستقیم در محدودهٔ متغیرهای فوقِ سراسری قرار نمی‌گرفتند. این نکته مشکلات امنیتی احتمالی بسیاری از نرم‌افزارها را برطرف کرد.[۲۳]
    ۴٫۳ ۲۰۰۲/۱۲/۲۷ ۲۰۰۵/۰۳/۳۱ واسط خط فرمان یا همان CLI به این نسخه اضافه شد.[۲۳]
    ۴٫۴ ۲۰۰۵/۰۷/۱۱ ۲۰۰۸/۰۸/۰۷ صفحات راهنما(man page) برای درستورات phpsize و config-php اضافه شد.[۲۳]
    ۵٫۰ ۲۰۰۴/۰۷/۱۳ ۲۰۰۵/۰۹/۰۵ موتور زند نسخهٔ ۲ معرفی شد.[۲۴]
    ۵٫۱ ۲۰۰۵/۱۱/۲۴ ۲۰۰۶/۰۸/۲۴ بهبود بازدهی با معرفی متغیرهای مترجم (Compiler Variables) در موتور جدید پی‌اچ‌پی.[۲۴] مدل PDO به عنوان یک رابط پایدار برای برقراری ارتباط با بانک‌های اطلاعاتی معرفی شد.[۲۵]
    ۵٫۲ ۲۰۰۶/۱۱/۰۲ ۲۰۱۱/۰۱/۰۶ افزونهٔ فیـلتـ*ـر (Filter Extension) به صورت پیش‌فرض فعال شد. پشتیبانی از جی‌سَن (JSON) افزوده شد.[۲۴]
    ۵٫۳ ۲۰۰۹/۰۶/۳۰ ژوئیه ۲۰۱۴[۲۶] پشتیبانی از namespace, late static binding، دستور jump (نسخهٔ ضعیف شدهٔ دستور Goto) و زباله جمع‌کن. پشتیبانی بهتر از سیستم‌عامل ویندوز. پشتیبانی از اس‌کیوال‌لایت نسخهٔ ۳. کتابخانهٔ Mysqlnd جایگزین کتابخانهٔ libmysql (که مسئول برقراری ارتباط با بانک‌اطلاعاتی مای‌اس‌کیوال بود) شد. افزونهٔ fileinfo که کارایی بهتری در مورد MIMEها دارد، جایگزین افزونهٔ mime_magic شد. افزونهٔ بین‌الملل (Internationalization) اضافه شد و توابع ereg از دور خارج شدند.
    ۵٫۴ ۲۰۱۲/۰۳/۰۱ ۳ سال بعد از انتشار[۲۷] پشتیبانی از Trait. پشتیبانی از آرایه‌ها با فرمت کوتاه. سرور وب داخلی.[۲۸] بهبود کارایی و استفاده از حافظه به میزان کمتر.
    توابع حذف شده: register_globals, safe_mode, allow_call_time_pass_reference, session_register
    ۵٫۵ ۲۰۱۳/۰۶/۲۰ ۳ سال بعد از انتشار[۲۷] جنراتورها افزوده شدند(Generators). بهینه‌ساز زند+ (Zend Optimizer+) افزوده شد.[۲۹]
    ۵٫۶ ۲۰۱۴/۰۸/۲۸ ۳ سال بعد از انتشار[۲۷] قابلیت بازنویسی عملگرها (Operator Overloading). ایجاد تغییرات در GMP یا GNU Multiple Precision.[۳۰]
    ۶٫x عرضه نشده عدم پشتیبانی نسخه رها شده‌ای از php
    ۷٫۰ ۲۰۱۵/۱۲/۳ ۳ سال بعد از انتشار[۲۷] معرفی نسخه سوم موتور زند و بهبود کارایی، پشتیبانی از متغیرهای ۶۴ بیتی در ویندوز
    ۷٫۱ ۲۰۱۶/۱۱ ۱۰ آذر ۱۳۹۸ [۲۷] قابلیت بازگردانی نوع void توسط توابع
    ۷٫۲ ۲۰۱۷/۱۱ ۱۰ آذر ۱۳۹۹ [۲۷] شمارش اشیاء غیر شمردنی
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    از تاریخ ۲۸ جون سال ۲۰۱۱ میلادی، گروه پی‌اچ‌پی برنامه‌ای مدون برای انتشار نسخه‌های آیندهٔ این زبان را منتشر کرد. بر اساس این برنامه هر ماه یک انتشار جزئی و هر سال یک انتشار اصلی اتفاق خواهد افتاد. از هر نسخه از پی‌اچ‌پی تا ۳ سال پشتیبانی می‌شود. تا ۲ سال تمامی به‌روزرسانی‌ها و سال سوم تنها به‌روزرسانی‌های امنیتی برای هر نسخه منتشر می‌شود.
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    ساختار
    برنامه Hello World زیر با استفاده از زبان پی‌اچ‌پی که در درون کدهای اچ‌تی‌ام‌ال قرار گرفته‌است، نوشته شده:

    <!DOCTYPE html>
    <meta charset="utf-8">
    <title>PHP Test</title>
    <?php
    echo 'Hello World';
    ?>
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    از آنجایی که پی‌اچ‌پی نیازی ندارد که در درون کدهای اچ‌تی‌ام‌ال قرار بگیرد یا بر روی سرور وب اجرا شود، کوتاه‌ترین برنامه Hello World پی‌اچ‌پی به صورت زیر است:

    <?= 'Hello world';
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    مفسر پی‌اچ‌پی تنها کدهایی که در درون جداکننده‌های پی‌اچ‌پی قرار بگیرند را تفسیر می‌کند. معروف‌ترین جداکننده‌های پی‌اچ‌پی علامت <?php و ?> است. جداکننده‌های دیگری مانند <script language="php"> و </script> یا جداکنندهٔ کوتاه <? یا <?= (که برای خروجی دادن متن یا متغیر استفاده می‌شود) و <% یا <%= و %> نیز وجود دارند. تمامی نوشته‌هایی که در خارج از جداکننده‌های پی‌اچ‌پی قرار بگیرند، توسط مفسر تفسیر نشده و به عنوان خروجی ارسال خواهند شد. استفاده از جداکننده‌های کوتاه می‌تواند از قابلیت حمل برنامه بکاهد، از آنجا که این جداکننده‌های توسط تنظیمات پی‌اچ‌پی قابل غیرفعال‌سازی هستند. از این رو استفاده از این جداکننده‌ها توصیه نمی‌شود.[۳۱] هدف تمامی این جداکننده‌ها این است که کد پی‌اچ‌پی را از قسمت غیر-پی‌اج‌پی مانند اچ‌تی‌ام‌ال جدا کند.[۳۲]

    نام متغیرها در زبان پی‌اچ‌پی حتماً باید با نماد دلار آغاز شود و نیازی به مشخص کردن نوع آن‌ها نیست. برخلاف نام توابع و کلاس‌ها نام متغیرها به بزرگی و کوچکی حروف حساس هستند. خطوط جدید و فاصله‌ها نادیده گرفته شده (به جز فاصله‌هایی که در درون رشته‌ها قرار داشته باشند) و تمامی دستورهای این زبان با علامت سمی‌کولن (;) پایان می‌یابند.[۳۳] در زبان پی‌اچ‌پی به ۳ صورت متفاوت می‌توان کامنت گذاشت. از علامت‌های /* */ برای کامنت‌های چندخطی و از علامت‌های // یا # برای کامنت‌های یک خطی استفاده می‌شود.[۳۴]

    220px-Php_syntaxes.png

    مقایسه ۲ حالت کد پی‌اچ‌پی
    از نظر ساختار کلی و کلمات کلیدی، پی‌اچ‌پی مانند بسیاری از زبان‌های سطح بالا از قواعد زبان سی پیروی می‌کند. اما برای تمام ساختارهای کنترلی قواعد نوع دومی نیز وجود دارد که می‌توان از آن‌ها مانند ساختار اصلی بهره برد.[۳۵] این قواعد نوع دوم مانند زبان‌های خانوادهٔ بیسیک است.
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    انواع داده
    زبان پی‌اچ‌پی داده‌های عددیِ صحیح را بر اساس نوع پلت‌فرم ذخیره می‌کند. در سیستم‌های ۳۲بیتی و ۶۴بیتی به ترتیب اعداد صحیح به‌صورت ۳۲ و ۶۴بیتی ذخیره می‌شوند. اعداد بدون‌علامت در عملکردی که مانند هیچ‌کدام از زبان‌ها برنامه‌نویسی دیگر نیست، در موقعیت‌هایی به اعداد علامت‌دار تبدیل می‌شوند.[۳۶] اعداد صحیح می‌توانند با مبنای ده (به صورت مثبت یا منفی یا مثبت)، در مبنای ۱۶، در مبنای ۸ یا در مبنای ۲ مقداردهی شوند.[۳۷] اعداد اعشاری نیز با توجه به پلت‌فرم ذخیره می‌شوند. این اعداد را به صورت اعشاری ساده یا ۲ حالت از نمایش علمی می‌توان مشخص کرد.[۳۸] پی‌اچ‌پی مانند زبان‌های جاوا و سی++ به‌صورت پیش‌فرض داده‌های بولی (صحیح و غلط) را در خود تعریف کرده‌است. بر اساس قوانین تبدیل متغیرها در این زبان، تمامی متغرهای غیر صفر به صحیح و تمامی متغیرها با مقدار صفر به غلط تبدیل می‌شوند.[۳۹] عملکردی مشابه در زبان پرل و سی++ وجود دارد. نوع داده‌ای به نام نال (null) نیز در این زبان وجود دارد. متغیر نال هیچ مقداری ندارد. تنها متغیر از نوع نال NULL (کلمهٔ نال با حروف بزرگ) است.[۴۰] داده‌هایی که از نوع منبع (Resource) هستند، نمایان‌گر اشاره‌گرهایی به منابع خارجی می‌باشند. این نوع متغیرها توسط خانوادهٔ خاصی از توابع که از معمولاً در یک افزونه قرار دارند ایجاد شده و تنها توسط همین خانواده از توابع قابل استفاده است. داده‌هایی مانند فایلها، تصاویر و اتصال‌ها به پایگاه‌های داده مثال‌هایی از منابع خارجی هستند که نیاز به متغیرهای منبع دارند.[۴۱] آرایه‌ها می‌توانند اعضایی از تمامی انواع داده‌ای که پی‌اچ‌پی از آن‌ها پشتیبانی می‌کند، را در خود داشته‌باشند. ترتیب در آرایه‌های پی‌اچ‌پی حفظ می‌گردد. آرایه‌ها در واقع جداول درهم‌سازی هستند که می‌توانند برای هر عضو خود یک کلید داشته‌باشند. در صورتی که کلیدی برای عضو مشخص نگردد، مانند آرایه‌های معمولی، به‌صورت خودکار از اعداد به‌عنوان کلید استفاده می‌گردد. این شماره‌گذاری از عدد صفر آغاز می‌شود. همچنین اعضای با کلید و بدون کلید می‌توانند در کنار هم در یک آرایه قرار بگیرند.[۴۲] پی‌اچ‌پی داده‌های رشته ای نیز دارد. رشته‌ها می‌توانند در درون علامت ' یا قرار گرفته یا با قواعد نوداک (nowdoc) و هیِرداک (heredoc) نوشته‌شوند.

    کتابخانه استاندارد پی‌اچ‌پی (SPL: Standard PHP Library) در تلاش است تا بتواند انواع داده‌های استاندارد را به بهترین نحو توسط کلاس و اینترفیس پیاده‌سازی کند. این داده‌ها شامل لیست پیوندی، پشته، صف و … می‌باشد.
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    توابع
    زبان پی‌اچ‌پی صدها تابع پایه و هزاران تابع افزونه دارد. اکثر این توابع به‌خوبی بر روی وب‌گاه پی‌اچ‌پی مستندسازی شده‌اند. نام‌گذاری توابع پایهٔ این زبان از قوانین یکسانی و مشخصی پیروی نمی‌کند.[۴۵] پی‌اچ‌پی تاکنون توابعی برای پشتیبانی از رشته‌های اجرایی (Thread) ارائه نکرده‌است اما از سیستم‌های چندپردازنده پازیکس (POSIX) پشتیبانی می‌کند.[۴۶]

    توابع جدید می‌توانند به شکل زیر تعریف شوند:

    function myNameFunction() { // تابع را تعریف می‌کند
    return 'John Doe'; // مقداری را بازمی‌گرداند
    }

    echo 'My name is ' . myNameFunction() . '!';
    // خروجی متن مقابل خواهد بود: 'My name is John Doe!'
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    در نسخهٔ ۵٫۲ و نسخه‌های قبل آن توابع دست اول نبوده و تنها به‌صورت مستقیم یا غیرمستقیم با نام‌شان قابل فراخوانی هستند.[۴۷] توابع پی‌اچ‌پی می‌توانند بدون نوشتن نمونه اولیه (Prototype) تعریف شوند.[۴۷] تعریف توابع می‌تواند در درون بلاک‌های شرطی قرار بگیرند تا در شرایط خاص تعریف شود. تمامی توابع پی‌اچ‌پی در هنگام فراخوانی باید در جلوی خود پرانتز داشته‌باشند. متغیرهایی که با دستور new ساخته می‌شوند در صورتی آرگومان نداشته‌باشند، از این قاعده مستثنی هستند. پی‌اچ‌پی قابلیت تعریف توابع بدون نام را ندارد اما می‌توان با قرار دادن نام یک تابع در متغیر، تابع را به‌صورت غیرمستقیم فراخوانی کرد.[۴۷]

    از نسخهٔ ۵٫۳ به بعد می‌توان با استفاده از قابلیت بستار (Closure)، توابع بدون‌اسم را به صورت زیر تعریف کرد:

    function getAdder($x) {
    return function($y) use ($x) {
    return $x + $y;
    };
    }

    $adder = getAdder(8);
    echo $adder(2); // خروجی عدد ۱۰ خواهد بود
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    در تکه‌کد بالا تابع getAdder به کمک متغیر $x یک بستار تعریف می‌کند که متغیر $y را به‌عنوان ورودی می‌گیرد. این نوع تابع یک شیء دست اول است به این معنی که می‌توان آن را در یک متغیر نگاه داشت، می‌توان به‌عنوان ورودی آن را به توابع دیگر داد و استفاده‌های دیگری از آن کرد. (توضیحات کامل‌تر در وب‌گاه ویکی پی‌اچ‌پی موجود است)

    دستور goto نیز در زبان پی‌اچ‌پی به‌شکل زیر قابل استفاده است:

    function lock() {
    $file = fopen('file.txt', 'r+');
    retry:
    if (!flock($file, LOCK_EX | LOCK_NB)) {
    goto retry;
    }
    fwrite($file, 'Success!');
    fclose($file);
    }
     
    وضعیت
    موضوع بسته شده است.

    برخی موضوعات مشابه

    بالا