<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Developers</title>
        <link>https://virgool.io/feed/@newworld</link>
        <description>دانشمندان چیزی را که قبلا وجود داشته کشف میکنند اما برنامه نویسان چیزی که قبلا وجود نداشته را خلق میکنند.</description>
        <language>fa</language>
        <pubDate>2026-07-06 15:53:07</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/189728/avatar/X1cG6T.png?height=120&amp;width=120</url>
            <title>Developers</title>
            <link>https://virgool.io/@newworld</link>
        </image>

                    <item>
                <title>حذف Burp suite در کالی لینوکس</title>
                <link>https://virgool.io/@newworld/%D8%AD%D8%B0%D9%81-burp-suite-%D8%AF%D8%B1-%DA%A9%D8%A7%D9%84%DB%8C-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-t9n4t02pcmoc</link>
                <description>برای حذف برپ‌سوئیت فقط این دستورالعمل ها را دنبال کنید.حذف فقط Burp suitesudo apt-get remove burpsuite فقط بسته Burp suite را حذف خواهد کرد.حذف Burp suite و وابستگی های آنsudo apt-get remove --auto-remove burpsuiteاین دستور بسته Burp suite و هر بسته وابسته دیگری را که دیگر نیازی نیست حذف می کند.پاک کردن پیکربندی/داده شمااگر شما می خواهید فایل های محلی/config خود را برای burpsuite حذف کنید، این کار خواهد کرد.اخطار: پیکربندی/داده های پاک شده را نمی توان با نصب مجدد بسته بازسازی کرد.sudo apt-get purge burpsuiteیا به طور مشابهsudo apt-get purge --auto-remove burpsuiteبسته Burp suite با موفقیت از کالی شما پاک شد ??</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Fri, 11 Jun 2021 15:18:03 +0430</pubDate>
            </item>
                    <item>
                <title>مقدمه ای برای Rubix ML :  کتابخانه یادگیری ماشین PHP</title>
                <link>https://virgool.io/@newworld/%D9%85%D9%82%D8%AF%D9%85%D9%87-%D8%A7%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-rubix-ml-%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-php-z4uewk9h2huq</link>
                <description>RubixMLمقدمهاگر شما یک توسعه دهنده PHP هستید یا به دنبال یک کتابخانه دوستانه و لذت بخش هستید می توانید برای ساخت برنامه هایی که از هوش مصنوعی استفاده کنید ، باید Rubix ML را جدی بگیرید. در این پست شما یک نمای کلی از کتابخانه Rubix ML و منابع مفیدی درباره مکان یادگیری بیشتر خواهید داشت.روبیکس ML چیست؟ توضیحات: Rubix ML یک کتابخانه سطح بالا برای یادگیری ماشین و یادگیری عمیق برای زبان PHP است که شامل پیاده سازی چندین الگوریتم یادگیری ماشین است ، بنابراین می توانید یک شی مدل را در یک خط یا چند خط کد تعریف کنید ، سپس از آن استفاده کنید تا متناسب با مجموعه ای از نقاط یا یک مقدار را پیش بینی کنید. این منبع باز است و استفاده تجاری از آن رایگان است.چه ویژگی هایی دارد؟این کتابخانه ابزارهایی را برای کل چرخه زندگی یادگیری ماشین از ETL (استخراج ، تبدیل ، بارگذاری ، دستکاری و جمع بندی داده ها) تا آموزش ، اعتبارسنجی متقابل و تولید با بیش از 40 الگوریتم یادگیری تحت نظارت و نظارت نشده فراهم می کند. تعدادی از الگوریتم های موجود در کتابخانه از یادگیری عمیق پشتیبانی می کنند از جمله Multilayer Perceptron classifier و MLP Regressor.از کجا آمده؟ Rubix ML توسط Andrew DalPino ، مهندس یادگیری ماشین و معمار نرم افزار ایجاد شد. این پروژه اکنون بیش از 20 مشارکت کننده فعال دارد.مثال: طبقه بندی کننده گل زنبق بگذارید مثالی بزنم تا به شما نشان دهم استفاده از کتابخانه آسان است. در این مثال ، ما برای تعیین گونه های گل زنبق از مجموعه ای از نمونه های آزمایش ناشناخته با استفاده از مجموعه داده های Iris ، یک طبقه بندی K نزدیکترین همسایه (KNN) آموزش می دهیم.use Rubix\ML\Datasets\Labeled;use Rubix\ML\Extractors\NDJSON;use Rubix\ML\Classifiers\KNearestNeighbors;use Rubix\ML\CrossValidation\Metrics\Accuracy;echo &#039;Loading data into memory ...&#039; . PHP_EOL;$training = Labeled::fromIterator(new NDJSON(&#039;dataset.ndjson&#039;));$testing = $training-&gt;randomize()-&gt;take(10);$estimator = new KNearestNeighbors(5);echo &#039;Training ...&#039; . PHP_EOL;$estimator-&gt;train($training);echo &#039;Making predictions ...&#039; . PHP_EOL;$predictions = $estimator-&gt;predict($testing);echo &#039;Example predictions:&#039; . PHP_EOL;print_r(array_slice($predictions, 0, 3));$metric = new Accuracy();$score = $metric-&gt;score($predictions, $testing-&gt;labels());echo &#039;Accuracy is &#039; . (string) ($score * 100.0) . &#039;%&#039; . PHP_EOL;این کد کامل را بررسی کنید.زیست بوم Rubix ML برای تسریع در عملکرد و سرور برای استقرار مدل آموزش دیده شما در تولید ، Tensor پسوند کتابخانه را فراهم می کند.منابع اگر می خواهید بیشتر بیاموزید ، به صفحه اصلی Rubix ML مراجعه کنید که شامل اسناد و مدارک و منابع مرتبط است. می توانید کد را از مخزن github دریافت کنید.مستنداتاگر از قبل با مفاهیم پایه ML آشنایی دارید یا اگر نه ، توصیه می کنم با مقدمه اساسی شروع به کار کنید تا مختصراً به یک پروژه Rubix ML نگاهی بیندازید ، توصیه می کنم نگاهی به مقاله یادگیری ماشین چیست؟ بیندازید.شروع سریع و نصبنتیجه Rubix ML انجام یادگیری ماشین با استفاده از زبان برنامه نویسی PHP را برای شما بسیار آسان می کند. این ابزار برای کل چرخه زندگی یادگیری ماشین از ETL تا آموزش ، اعتبارسنجی متقابل و تولید فراهم می کند.https://devdojo.com/mnsuccess/a-noble-introduction-to-rubix-ml-a-php-machine-learning-library</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Sat, 05 Dec 2020 18:03:13 +0330</pubDate>
            </item>
                    <item>
                <title>نسخه جدید Rubix ML 0.2.4 منتشر شد</title>
                <link>https://virgool.io/@newworld/%D9%86%D8%B3%D8%AE%D9%87-%D8%AC%D8%AF%DB%8C%D8%AF-rubix-ml-024-%D9%85%D9%86%D8%AA%D8%B4%D8%B1-%D8%B4%D8%AF-owb75svgso5m</link>
                <description>نسخه 0.2.4 کتابخانه سطح بالا یادگیری ماشین Rubix ML برای PHP منتشر شد.RubixMLتغییرات و ویژگی های نسخه جدید:واسط برنامه نویسی کاربردی (API) داخلی طبقه بندی شده و حاشیه نویسی شدهرفع روش های زمینه preprocess() و combinations()نسخه های ثابت اضافه شده استدانلود در گیت هاب:https://github.com/RubixML/RubixML/releases/tag/0.2.4</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Sat, 05 Dec 2020 17:40:51 +0330</pubDate>
            </item>
                    <item>
                <title>هوش مصنوعی با PHP ، کتابخانه سطح بالا Rubix ML</title>
                <link>https://virgool.io/@newworld/rubixml-machine-learning-for-php-znxdgvggbobp</link>
                <description>یک کتابخانه سطح بالا برای یادگیری ماشین و یادگیری عمیق برای زبان PHPRubixmlاستفاده از API برای توسعه دهندگانبیش از 40 الگوریتم یادگیری نظارت شده و نظارت نشدهپشتیبانی از ETL ، پیش پردازش و اعتبارسنجی متقابلمنبع باز و رایگان برای استفاده تجاریروبیکس ML چیست؟ Rubix ML یک کتابخانه منبع باز رایگان برای زبان PHP است که به شما امکان می دهد برنامه هایی را بسازید که از داده های خود یاد می گیرند. ما ابزارهایی را برای کل چرخه یادگیری ماشین از ETL تا آموزش ، اعتبارسنجی متقابل و تولید با بیش از 40 الگوریتم یادگیری تحت نظارت و نظارت نشده فراهم می کنیم.نصب و راه اندازیکتابخانه Rubix ML را با استفاده از Composer نصب کنید:$ composer require rubix/mlالزامات برای Rubix MLزبان PHP 7.2 یا بالاترشروع کار با Rubix MLاگر در یادگیری ماشین (Machine learning) تازه کار هستید ، توصیه می کنیم نگاهی به مقاله یادگیری ماشین چیست؟ بیندازید.شروع کار، در صورتی که با مفاهیم اصلی یادگیری ماشین آشنا هستید می توانید مقدمه اصلی را برای نگاهی کوتاه به یک پروژه معمولی Rubix ML مرور کنید. از آنجا ، می توانید آموزش های رسمی زیر را مشاهده کنید که شامل سطح مهارت های مبتدی تا پیشرفته است.آموزشها و پروژه های نمونه این نمونه پروژه ها را با استفاده از کتابخانه Rubix ML بررسی کنید.CIFAR-10 Image RecognizerColor ClustererCredit Default Risk PredictorDivorce PredictorDota 2 Game Outcome PredictorHuman Activity RecognizerHousing Price PredictorIris Flower ClassifierMNIST Handwritten Digit RecognizerText Sentiment Analyzerتعامل با انجمن Rubix MLبه کانال تلگرام ما بپیوندیدخبرنامه ما را دریافت کنیددر گروه LinkedIn ملاقات کنیدمنابع مالی Rubix ML از طریق کمک های مالی جامعه تأمین می شود. شما می توانید با مشارکت در یکی از منابع مالی زیر ، به یک حامی مالی تبدیل شوید.حامیان مالی Githubمجوزکد دارای مجوز MIT و مستندات دارای مجوز CC BY-NC 4.0 است.منابع مطلب:https://docs.rubixml.com/en/latest</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Thu, 03 Dec 2020 19:58:53 +0330</pubDate>
            </item>
                    <item>
                <title>نحوه اجرا PHP 8 با JIT در Docker</title>
                <link>https://virgool.io/@newworld/%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%AC%D8%B1%D8%A7-php-8-%D8%A8%D8%A7-jit-%D8%AF%D8%B1-docker-fj4gevl3pud8</link>
                <description>PHP 8داکر تصویرتصویر داکر فرم بسیار مناسبی برای تهیه نسخه مناسب PHP است که برای اجرا در هر دستگاه آماده است.برای نصب Docker روی دستگاه خود ، اسناد رسمی را بررسی کنید.تصویر Docker را با کامپایل PHP 8 تهیه کردم و در Docker Hub موجود است: https://cloud.docker.com/u/akondas/repository/docker/akondas/phpبرچسب تصویر داکر: akondas / php: 8.0-cli-alpine.در شبکه ، می توانید تصاویر مشابهی را پیدا کنید که می توانند برای همین مناسب باشند. با این حال ، من می خواستم به دو هدف اضافی نیز دست یابم:یاد بگیرید که تصاویر خود را بسازید و آنها را به صورت عمومی به اشتراک بگذاریدتصویری شبیه به تصاویر رسمی PHP 7.x تهیه کنیدنکته دوم برای ایجاد یک مقایسه جامع از نسخه php از نظر عملکرد برای من به ویژه ضروری خواهد بود.اجرا PHP 8من فرض می کنم شما Docker را نصب کرده اید یا قبلاً آن را قبلاً نیز داشته اید. برای اجرای هر پرونده .php در PHP 8 از دستگاه شما نیاز داریم:تصویر کانتینر را بارگیری و اجرا کنیدdocker run -it akondas / php: 8.0-cli-alpineنصب فهرست کار (به طوری که کانتینر بتواند پرونده ها را از پوشه واقعی که در آن قرار دارد بخواند)-v &amp;quot$ PWD&amp;quot: / usr / src / appدایرکتوری کار را روی یکی از مونتاژ شده در بالا تنظیم کنید-w / usr / src / appبنابراین فرمان کامل مانند این است:docker run -it -v &amp;quot$PWD&amp;quot:/usr/src/app -w /usr/src/app \
akondas/php:8.0-cli-alpine php script.phpپشتیبانی JIT را فعال کنیدبرای فعال کردن JIT باید این چهار پارامتر اضافی را ارائه دهید:-dzend_extension=opcache.so 
-dopcache.enable_cli=1 
-dopcache.jit_buffer_size=500000000
-dopcache.jit=1235مورد اول opcache را اجرا می کند ، دیگران JIT را پیکربندی می کنند. می توانید مقادیر آنها را از این طریق تغییر دهید و جلوه های مختلف را بررسی کنید. جزئیات بیشتری درباره تنظیمات جدید در RFC خواهید یافت.تست کاراییبیایید یک اسکریپت آزمایشی ساده برای آزمایش عملکرد JIT جدید تهیه کنیم. من پیشنهاد می کنم یک عملکرد فیبوناچی خوب و ساده بنویسید ?:function fibonacci($n){
    return(($n &lt; 2) ? 1 : fibonacci($n - 2) + fibonacci($n - 1));
}

$n = 32;
$start = microtime(true);
$fibonacci = fibonacci($n);
$stop = microtime(true);

echo sprintf(&amp;quotFibonacci(%s): %s\nTime: %s&amp;quot, $n, $fibonacci, $stop-$start);و اکنون زمان نمایش است. ابتدا بیایید نتیجه خاموش را بررسی کنیم.docker run -it -v &amp;quot$PWD&amp;quot:/usr/src/app -w /usr/src/app \
akondas/php:8.0-cli-alpine php fibo.php

Fibonacci(32): 3524578
Time: 0.17796015739441خوب ، JIT ، به من نشان بده آنچه بدست آورده:docker run -it -v &amp;quot$PWD&amp;quot:/usr/src/app -w /usr/src/app \
akondas/php:8.0-cli-alpine php -dzend_extension=opcache.so \
-dopcache.enable_cli=1 -dopcache.jit_buffer_size=500000000 \
-dopcache.jit=1235 fibo.php

Fibonacci(32): 3524578
Time: 0.050444841384888بنابراین 0.1779 در مقابل 0.0504 چشمگیر به نظر می رسد. شروع JIT ، در صورت محاسبه فیبوناچی ، 352٪ از افزایش سرعت gave را به دست آورد.اکنون زمان آن است که شما آن را آزمایش کنید! من شما را تشویق می کنم تا نتایج آزمایش ها را در نظرات به اشتراک بگذارید.از JIT لذت ببرید.</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Sun, 05 Jul 2020 15:14:47 +0430</pubDate>
            </item>
                    <item>
                <title>فعال کردن کامپایلر JIT در PHP 8 (آموزش دوم)</title>
                <link>https://virgool.io/@newworld/%D9%81%D8%B9%D8%A7%D9%84-%DA%A9%D8%B1%D8%AF%D9%86-%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84%D8%B1-jit-%D8%AF%D8%B1-php-8-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AF%D9%88%D9%85-u2oijqst30bc</link>
                <description>PHP 8در قسمت دوم آموزش فعال کردن کامپایلر JIT با شما هستیم. (قسمت اول آموزش)وابستگی هابرای تهیه PHP از منبع به چندین وابستگی نیاز خواهیم داشت.sudo apt-get update
sudo apt-get install git build-essential 
libgccjit-6-dev libzip-dev autoconf re2c bison libxml2-dev -yممکن است معلوم شود که این کافی نیست. سپس یک قانون کلی وجود دارد: سعی کنید وابستگی گمشده را با پیشوند lib و / یا پسوند -dev نصب کنید. به عنوان مثال ، وقتی با خطایی مانند این روبرو شدید (در مرحله پیکربندی):configure: error: xml2-config not found. 
Please check your libxml2 installation.می توانید این دستور را نصب کنید تا گم شده نصب شود libxml2sudo apt-get install libxml2-devپس از نصب وابستگی ها به کد منبع نیاز خواهیم داشت.کلون سورس PHPcd ~
git clone https://github.com/php/php-src.git
cd php-srcبه طور پیش فرض ، ما روی شاخه اصلی کار می کنیم ، بنابراین در حالت فعلی ، PHP 8.0.0-dev خواهد بود.پیکربندی کنیداز آنجا که پرونده ./configure وجود ندارد ، برای تولید یک مورد باید از ./buildconf استفاده کنیم:./buildconfبعد ، ما می خواهیم مجموعه خود را پیکربندی کنیم. برای تنظیم مسیر مقصد می توانید از پرچم --prefix استفاده کنید./configure --prefix=/opt/php/php8 --enable-opcache --with-zlib 
--enable-zip --enable-json --enable-sockets --without-pearبرای دیدن همه گزینه های موجود:./configure --helpوقتی همه چیز خوب پیش می رود باید ببینید:Generating files
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/phpdbg/phpdbg.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commandsاکنون ما آماده ساخت این پروژه هستیم.ساختنقبل از صدور دستور ساخت ، ارزش بررسی تعداد هسته شما در دستگاه شما:nprocاکنون می توانید با استفاده از این شماره برای ساخت سریعتر با پرچم -j استفاده کنید:make -j4با این کار از 4 هسته برای ساخت استفاده می شود. بعد از اتمام ساخت ، باید ببینید:Generating phar.php
Generating phar.phar
PEAR package PHP_Archive not installed: 
 generated phar will require PHP&#039;s phar extension be enabled.
directorytreeiterator.inc
directorygraphiterator.inc
pharcommand.inc
clicommand.inc
invertedregexiterator.inc
phar.inc

Build complete.
Don&#039;t forget to run &#039;make test&#039;.اگر زمان بیشتری دارید می توانید PHP کامپایل شده خود را تست کنید:make testدر مرحله بعد ، ما می خواهیم دودویی کامپایل شده را در یک مکان مستقل در دسترس قرار دهیم.نصبsudo make installاین دستور PHP را در قسمت --prefix (نصب شده در پیکربندی) نصب می کند. اکنون بررسی کنید که PHP کامپایل شده جدید کار می کند:/opt/php/php8/bin/php -v

PHP 8.0.0-dev (cli) (built: Apr  5 2019 11:19:45) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologiesشروع به جالب شدن می‌کند.فعال سازی افزونهو این نکته ای است که من کاملاً فراموش کردم. بدون آن ، هیچ پشتیبانی از JIT نخواهد داشت زیرا این یک بخش جدایی ناپذیر از Opcache است.در PHP JIT به عنوان بخشی تقریباً مستقل از OPcache پیاده سازی شده است. ممکن است در زمان کامپایل PHP و در زمان اجرا فعال / غیرفعال شود.ما می خواهیم افزونه opcache را فعال کنیم. از آنجا که هیچ پرونده پیکربندی وجود ندارد ، می توانید پرونده جدیدی ایجاد کنید. ابتدا اجازه می دهیم مسیر صحیح را بررسی کنیم:$ /opt/php/php8/bin/php --ini
Configuration File &#40;php.ini&#41; Path: /opt/php/php8/lib
Loaded Configuration File:         (none)می توانید php.ini-Development یا php.ini-production را از فهرست منبع (و تغییر نام آن به php.ini) کپی کرده یا جدید ایجاد کنید.در این لحظه پرونده خالی جدید ایجاد کرده و پسوند بارگیری می شود.cd /opt/php/php8/lib
sudo touch php.ini
echo &#039;zend_extension=opcache.so&#039; | sudo tee php.iniبا گزینه -v یا گزینه -m می توانید بررسی کنید که آیا همه چیز درست پیش می رود:/opt/php/php8/bin/php -v            
PHP 8.0.0-dev (cli) (built: Apr  5 2019 11:19:45) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.0-dev, Copyright (c), by Zend Technologiesظریفانه ، شما آخرین نسخه PHP را دارید. می توانیم بگوییم که شما دارای نسخه خونریزی لبه PHP هستید.چک کردن JITبرای بررسی اینکه JIT کار می کند یا می تواند کد شما را بهینه کند ، ایجاد اسکریپت ساده jit.php:for ($i=0; $i&lt;100; $i++) {
    echo $i;
}ابتدا آن را اجرا کنید و بررسی کنید که آیا این کار میکند:/opt/php/php8/bin/php jit.phpبرای فعال کردن JIT باید پرچم های اضافی را ارائه دهیم: opcache.enable_cli = 1 opcache.jit_buffer_size = 50000000 opcache.jit = 1235/opt/php/php8/bin/php -d opcache.enable_cli=1 
-d opcache.jit_buffer_size=50000000 -d opcache.jit=1235 jit.phpجزئیات بیشتری درباره تنظیمات جدید در RFC خواهید یافتدر نگاه اول ، اگر می خواهید مطمئن باشید که IT کار می کند opcache.jit debug = 1:/opt/php/php8/bin/php -d opcache.enable_cli=1 
-d opcache.jit_buffer_size=50000000 -d opcache.jit=1235 
-d opcache.jit_debug=1 jit.phpشما باید کد مونتاژ تولید شده را ببینید:.L1:
        test $0x1, 0x9(%rdi)
        jnz .L8
.L2:
        mov $0x0, (%rdi)
        mov $0x4, 0x8(%rdi)
.L3:
        mov $EG(exception), %rax
        cmp $0x0, (%rax)
        jnz JIT$$exception_handler
        jmp .L5
.L4:
        mov $0x7fd319514630, %r15
        mov $0x5555cc61c100, %raxهمچنین می توانید عملکرد را با / بدون JIT با استفاده از فایل Zend / bench.php از فهرست منبع بررسی کنید.JITing مبارک ?منبع: https://arkadiuszkondas.com/compiling-php-8-from-source-with-jit-support/</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Sun, 05 Jul 2020 14:56:54 +0430</pubDate>
            </item>
                    <item>
                <title>فعال کردن کامپایلر JIT در PHP 8 (آموزش اول)</title>
                <link>https://virgool.io/@newworld/%D9%81%D8%B9%D8%A7%D9%84-%DA%A9%D8%B1%D8%AF%D9%86-%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84%D8%B1-jit-%D8%AF%D8%B1-php-8-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D9%88%D9%84-bvvlwepbtfqa</link>
                <description>نسخه 8 PHPبرای علاقه مندان به JIT در PHP 8 ، من در سناریوی برنامه وب در دنیای واقعی معیارهایی را برای شما انجام دادم. آگاه باشید که این معیارها درباره JIT مفید یا نیستند ، چیزی نمی گویند ، آنها فقط نشان می دهند که آیا می تواند عملکرد برنامه وب متوسط شما را بهبود بخشد یا خیر.Setupاین معیارها روی دستگاه محلی من اجرا شده اند. به همین ترتیب ، آنها چیزی در مورد دستاوردهای عملکرد مطلق نمی گویند ، ما فقط می توانیم نتیجه بگیریم که چه تأثیر نسبی JIT روی کد ما دارد.من PHP FPM را اجرا می کنم ، پیکربندی شده برای ایجاد 20 فرآیند کودک است ، و من همیشه اطمینان حاصل می کنم که فقط 20 درخواست همزمان را همزمان انجام دهم ، فقط برای از بین بردن هرگونه عملکرد اضافی در سطح FPM. ارسال این درخواست ها با استفاده از دستور زیر با ApacheBench انجام می شود:ab -n 100 -c 20 -l http://aggregate.stitcher.io.test:8081/discoverJIT Setupراه اندازی JIT به تنهایی به یک بخش نیاز دارد. صادقانه بگویم ، این یکی از گیج کننده ترین روش ها برای پیکربندی یک پسوند PHP است که من تا به حال دیده ام ، و من می ترسم که نحو در اینجا برای ماندن باشدبنابراین در اینجا می رود:کامپایلر JIT با مشخص کردن opcache.jit_buffer_size در php.ini فعال می شود. اگر این دستور حذف شود، مقدار پیش‌فرض بر روی ۰ تنظیم می‌شود، و JIT می‌تواند اجرا شود.بعد ، چندین گزینه کنترل JIT وجود دارد ، همه آنها در یک دستورالعمل واحد موسوم به opcache.jit ذخیره می شوند و می توانند به عنوان مثال مانند این باشند:opcache.jit_buffer_size=100M
opcache.jit=1235درواقع RFC معنی هر شماره را ذکر می کند. توجه داشته باشید: این ماسک کمی نیست، هر عدد به سادگی یک گزینه پیکربندی دیگر را نشان می‌دهد. RFC گزینه‌های زیر را لیست می‌کند:O — سطح بهینه سازی0    کامپایلر JIT نکن1    حداقل JIT (با دستگیرندگان استاندارد VM تماس بگیرید)2    ورودی کاربری انتخابی VM3    بهینه سازی JIT بر اساس استنباط نوع استاتیک از عملکرد فردی4    بهینه سازی JIT بر اساس استنتاج نوع استاتیک و درخت تماس5    کامپایلر JIT بر پایه inference از نوع استاتیک و تحلیل‌های فرآیند داخلی انجام شدT — JIT ماشه0    همه ی توابع JIT اول اسکریپت بارگیری شوند1    توابع JIT اول اجرا شوند2    نمایه در صورت درخواست اول و در صورت درخواست دوم توابع داغ را کامپایل کنید3    پروفایل در پرواز و توابع داغ را کامپایل کنید4    کامپایل توابع با برچسب jit@ در توضیحات docR — تخصیص ثبت نام0    تخصیص ثبت را انجام ندهید1    ستفاده از تخصیص دهنده scan محلی
2    از تخصیص دهنده ثبت جهانی اسکن خطی استفاده کنیدC — پرچم های بهینه سازی خاص CPU0    هیچ یک1    فعال کردن تولید دستورالعمل AVXیک gotcha کوچک: RFC این گزینه ها را به ترتیب معکوس ذکر می کند ، بنابراین رقم اول مقدار C را نشان می دهد ، دوم R و غیره.به هر حال ، RFC 1235 را به عنوان بهترین پیش فرض پیشنهاد می کند ، حداکثر جابجایی ، مشخصات در پرواز را انجام می دهد ، از یک توزیع کننده ثبت جهانی اسکن بوش - هر آنچه ممکن است باشد - استفاده می کند و نسل دستورالعمل AVX را قادر می سازد.قسمت دوم این آموزشمنبع:https://stitcher.io/blog/jit-in-real-life-web-applications</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Sun, 05 Jul 2020 14:14:49 +0430</pubDate>
            </item>
                    <item>
                <title>نسخه 8 PHP منتشر شد</title>
                <link>https://virgool.io/@newworld/%D9%86%D8%B3%D8%AE%D9%87-8-php-%D9%85%D9%86%D8%AA%D8%B4%D8%B1-%D8%B4%D8%AF-nlcr8v8nye98</link>
                <description>PHP 8.0.0 Alpha 1 برای تست در دسترس است25 ژوئن 2020تیم PHP خوشحال است که اولین نسخه آزمایشی PHP 8.0.0 ، Alpha را اعلام می کند. این چرخه انتشار PHP 8.0 را شروع می کند ، که نمای کلی آن در PHP Wiki مشخص شده است .برای دریافت منبع از PHP 8.0.0 Alpha 1 لطفا به صفحه بارگیری مراجعه کنید .لطفاً از این نسخه در تولید استفاده نکنید ، این یک نسخه آزمایشی اولیه است.برای کسب اطلاعات بیشتر در مورد ویژگی های جدید و تغییرات دیگر ، می توانید پرونده NEWS یا پرونده UPGRADING را برای لیست کاملی از یادداشتهای به روزرسانی مطالعه کنید. این پرونده ها را می توان در بایگانی انتشار نیز یافت.نسخه بعدی آلفا 2 خواهد بود که برای 9 ژوئیه 2020 برنامه ریزی شده است.با تشکر از شما برای کمک به ما در بهتر شدن PHP.PHP 8 Download</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Thu, 25 Jun 2020 22:55:14 +0430</pubDate>
            </item>
                    <item>
                <title>دانلود آهنگ About Us Sharapov Remix</title>
                <link>https://virgool.io/@newworld/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A2%D9%87%D9%86%DA%AF-about-us-sharapov-remix-loqmxjhgnzyk</link>
                <description>(About Us (Sharapov Remixمتن آهنگ:Where are so my heart that up the riverRiver now I&#x27;m road hot to put your liver to youTo youBut the river can&#x27;t flowingNo sign is slowingAnd the north kept goingAnd the north kept on going past youAnd left youDab into the coldInto the flowWould you want knowBut I know About usAbout usDab into the coldInto the flowWould you want knowBut I know About usAbout usWho would open the vocabularyLock the door up like a FabujeHave you meSell for the code for Drake awayHave you don&#x27;t know about meWho would open the vocabularyLock the door up like a FabujeHave you meSell for the code for Drake awayHave you don&#x27;t know about meWhere are so my heart that up the riverRiver now I&#x27;m road hot to put your liver to youTo youBut the river can&#x27;t flowingNo sign is slowingAnd the north kept goingAnd the north kept on going past youAnd left youDab into the coldDab into the coldInto the flowWould you want knowBut I know About usAbout usDab into the coldInto the flowWould you want knowBut I know About usAbout usDab into the holeلینک دانلود آهنگ</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Tue, 23 Jun 2020 13:09:05 +0430</pubDate>
            </item>
                    <item>
                <title>25 سالگی PHP</title>
                <link>https://virgool.io/@newworld/25-%D8%B3%D8%A7%D9%84%DA%AF%DB%8C-php-rmz4zywv0ykh</link>
                <description>25 سالگی PHPپی اچ پی 25 سال با جهش عملکرد دیگری در افق جشن می گیرددر 8 ژوئن 1995 بود که Rasmus Lerdorf اعلام کرد وجود نسخه 1.0 PHP. این زبان توسعه همه جا در وب حدود 25 سال است که وجود دارد ، و همچنین 25 سال است که به عنوان یک زبان بد شناخته شده است. راسموس لدورف نام PHP را برای &quot;  صفحه اصلی شخصی  &quot; انتخاب کرد. این پروژه شخصی کوچک فقط برای ایجاد صفحات وب از قالب ها مورد استفاده قرار گرفت . هر مدل شامل HTML افزوده شده توسط چند خط PHP است ، به عنوان مثال برای جستجوی اطلاعات در یک پایگاه داده و پر کردن صفحه وب نهایی. باید گفت که در دهه 1990 ، تنها گزینه جایگزین برای تولید صفحات وب &quot;به صورت دستی&quot; نوشتن کد در C بود و این پروژه به طور قابل توجهی روند کار را ساده کرد.اما همانطور که بعداً سازنده آن اعتراف کرد ، ایده اصلی آن این بود که از PHP فقط برای چیدمان سایت استفاده می شود و بقیه همیشه باید در C. نوشته شود به جز اینکه کسی نمی خواست وب سایت ها را در C رمزگذاری کند. برعکس ، همه می خواستند از PHP استفاده کنند تا همه کارها روی سرورها انجام شود. برای پاسخگویی به این تقاضا ، عملکردها بر روی به روزرسانی ها افزوده شده است ، اما همیشه بر این اساس ساده و بدون هیچ گونه تأمل کلی.این منبع شهرت بد پی اچ پی ، زبان توسعه ای است که تقریباً بیست سال پس از ایجاد آن تا سال 2014 مشخصات مشخصی نداشت. چندین ویژگی جدید جدید بعد از این واقعیت اضافه شد ، مانند مفاهیم برنامه نویسی شی که با PHP 5 وارد شده اند. این تجمع توابع و رویکرد بسیار ساده آن که به بسیاری از توسعه دهندگان اجازه می دهد همیشه نتوانند PHP بد بنویسند. به عملکرد غالباً فاجعه بار و حفره های امنیتی عظیم منجر شده است.برای چند سال ، طراحان PHP با این وجود برای اصلاح این نقص های اصلی کار می کنند. با انتشار PHP 7 در دسامبر 2015 ، عملکرد جهشی چشمگیر به جلو داشت. و تمام نشده است: PHP 8 که باید در پایان سال منتشر شود ، در برخی موارد مجدداً عملکرد خود را دو برابر خواهد کرد. خبر بزرگ کامپایلر JIT ( فقط در زمان ) خواهد بود كه PHP را براساس كد دستگاه x86 كامپايل كرده و در نتيجه مي تواند سرعت پردازش را افزايش دهد.PHP 8 JITسود واقعی به نوع عملیاتی که انجام می شود بستگی دارد ، آنها باید به ویژه در سنگین ترین عملیات ها ، به ویژه مواردی که بر اساس محاسبات ریاضی هستند ، پیدا شوند. با وجود همه چیز ، جالب است بدانید که پرکاربردترین زبان در وب تبدیل شدن به یک قهرمان عملکرد است. اما حتی اگر سازندگان آن به سرعت پیشرفت کنند ، کاربران آن همیشه از جدیدترین نوآوری ها سود نمی برند.تخمین زده می شود که تقریباً 80٪ وب سایت ها اکنون مبتنی بر PHP هستند که حدود یک سوم آن ها فقط بر پایه وردپرس بنا شده اند. PHP 5 تقریباً نیمی از این سایت ها استفاده می شوند و حتی برای کسانی که به روز رسانی شده اند ، اکثریت هنوز در نسخه 7.2 یا بالاتر است ، در حالی که ما در 7.4 هستیم. و حتی اگر سرورها به روز باشند ، برنامه های نصب شده روی سرورها هنوز به ندرت از زبان جدید سوء استفاده می کنند.سیستم مدیریت محتوا WordPress ، برای بازگشت به بزرگترین CMS در وب ، تازه شروع به بررسی به روز رسانی کد آن برای PHP 7. کرده است. آخرین نوآوری ها کافی است بگوییم که هنوز تعداد زیادی کار وجود دارد تا پایگاه عظیم خطوط کد که وردپرس را تشکیل می دهد به طور کامل بروزرسانی شود.منبع:https://www.macg.co/ailleurs/2020/06/php-fete-ses-25-ans-avec-un-nouveau-bond-de-performances-lhorizon-114535</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Wed, 10 Jun 2020 15:59:48 +0430</pubDate>
            </item>
                    <item>
                <title>افزایش 45 برابری سرعت PHP 8 نسبت به PHP 7</title>
                <link>https://virgool.io/@newworld/%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-45-%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C-%D8%B3%D8%B1%D8%B9%D8%AA-php-8-%D9%86%D8%B3%D8%A8-%D8%A8%D9%87-php-7-bpldzxufchwj</link>
                <description>کامپایلر JIT در PHP نسخه 8کامپایل JIT چیست؟کامپایل JIT به اختصار رسیده کلمات Just In Time است، JIT یک تکنیک است که کدهای نرم‌افزار ما را در حال اجرا کامپایل (Compile) یا جمع‌آوری می‌کند که می‌توان در عوض کامپایلرهای دیگر از آن استفاده کرد.شاید تا به حال اسم JIT به گوشتان نخورده است پس اجازه دهید اول توضیح بدهیم که JIT چیست؟ شاید شما از قبل می‌دانستید که PHP یک زبان تفسیر شده است، به این معنا که کد شما قبل از اجرا شدن نیازی به کامپایل (Compile) شدن ندارد مثل زبان‌های C و ++C. در عوض آن، PHP کد شما را می‌خواند و آن را اجرا می‌کند به عبارت دیگر شما کدی نمی‌نویسید که درون کدهای سطح پایین کامپایل شود تا توسط کامپیوتر اجرا بشوند، اما شما یک سند (Script) از کدها را به PHP می‌دهید تا اجرا شوند.زبان PHP یک ماشین مجازی به اسم Zend VM دارد، چرا آن را ماشین مجازی صدا می‌زنیم؟ چون مثل کامپیوتر شما برای اجرا کردن کدها عمل می‌کند، بر اساس توضیح بالا خواندن و اجرا کردن کد بر عهده‌ی ماشین مجازی است. اما قبل از آن کد شما توسط PHP خوانده و به کدهای عملیاتی (Opcode) (کدهای عملیاتی یا Opcode زبانی است که Zend VM آن را متوجه می‌شود و توسط Zend Vm ترجمه می‌شوند) و بعد از آن Zend VM می‌تواند کدهای عملیاتی (Opcode) را ترجمه کند. در زیر شما یک تصویر را برای درک بیشتر مشاهده می‌کند.با این اوصاف ما در قدم اول به یک کامپایل (Compile) نیاز داریم و در قدم بعدی به یک مترجم. برای صرفه جویی در زمان به اصطلاح یک چیزی به اسم (OPCache (Opcode Cache داریم که قدم‌های مختلف کامپایل کردن را ذخیره می‌کند تا دفعه‌ی بعدی نیازی به دوباره کامپایل کردن کدها نباشد.تا الان PHP این گونه کار می‌کرد، خب حالا باید درباره‌ی کامپایلر JIT در PHP صحبت کنیم. از قبل JIT توسط کامپایلر قابل دسترس بوده است به این معنا که کد ما  به کد ماشین یا سطح پایین تبدیل می‌شود تا اجرا شود. JIT بر پایه Just In Time است به این معنا که به جای اینکه اول کامپایل کند و بعد کدهای ما را اجرا کند، زمانی که شما نیاز به اجرا کردن کدهای خود دارید در آن موقع شروع به کامپایل کردن کدها می‌کند.برای PHP به جای اینکه کدها به ماشین مجازی Zend VM برای اجرا کردنشان بروند، کامپایلر JIT کدهای PHP ما را به کدهای سطح پایین کامپایل، و اجرا می‌کند پس ما دیگر به مترجم نیازی نداریم، البته کد سریع‌تر از قبل هم اجرا می‌شود.اگر دانش‌ بالایی نسبت به کدهای سطح پایین دارید می‌توانید کدهای نوشته شده برای JIT که در مخزن گیت‌هاب وجود دارد را مشاهده و شروع به خواندن کنید.آیا PHP را سریع‌تر می‌کند؟زیو (Zeev) یکی از توسعه دهندگان هسته PHP یک دمو (Demo) را منتشر کرده است که سرعت PHP را با JIT نشان می‌دهد که چقدر سریع‌تر شده است در مقایسه با ورژن قبلی آن، درون این ویدیو کدی وجود دارد که در حال ساختن یک تصویر سه بعدی است. https://www.aparat.com/video/video/embed/videohash/ZP0dO/vt/frame اما خب هیچکس از PHP برای ساختن تصویر سه بعدی استفاده نمی‌کند. دلیل اینکه این کد خیلی سریع‌تر اجرا شد این بود که این کد به کد ماشین یا کد سطح پایین کامپایل شده است و مستقیما توسط CPU اجرا شده است که نشان می‌دهد دیگر نیازی به مترجم یا Interpreter وجود ندارد.کامپایل JIT را برای چه می‌خواهیم؟بعد از PHP 7 کارایی PHP بیشتر از هر زمانی نگران کننده شده است، باید از HHVM فیسبوک که مخفف عبارت HipHop Virtual Machine که در حال استفاده از کامپایلر JIT است،باید از OpCache، ساختمان داده یا Data Structures و هر چیزی که باعث شدند، PHP کم کم بهینه‌تر شود و به بالاترین کارایی برسد تشکر کرد.علاوه بر آن PHP برای زبان سمت سرور یک گزینه کاملا مناسب در نظر گرفته شده است. PHP دیگر مثل گذشته کند نیست، زمانش رسیده است که به توانایی‌های PHP اضافه کنیم مثل تحلیل و بررسی داده‌ها (Data analysis)، رندر (Render) کردن عکس‌های سه بعدی (3D) و دو بعدی (2D).در گذشته کدهایی با کارایی بالا توسط زبان‌های برنامه‌نویسی C و ++C به جای پیکیج (Package) زبان PHP نوشته می‌شد. برای مثال phpredis همیشه 6 - 7 برابر از predis سریع‌تر است، اگر کد PHP به جای ترجمه شدن کامپایل بشود ما پکیج‌های PHP را خواهیم داشت که همان سرعت و کارایی را دارند که با زبان‌های برنامه‌نویسی مانند C و ++C نوشته شده‌اند.بنابراین کامپایلر JIT انتخاب شد چون جالب‌ترین و بهترین جهت یا مسیر است.امنیت در JITکامپایل JIT کد عملیاتی (OpCode) را به کد ماشین کامپایل می‌کند و آن‌ها را اجرا می‌کند اما دلایل مشکلات امنیتی این است که حافظه (Memory) یا باید قابل نوشتن (Writable) باشد یا قابل اجرا (Executable) شدن که به اصطلاح آن‌ها را با علامت‌های W^X نشان می‌دهند.زمانی که PHP شروع به اجرا شدن می‌کند، سپری که مانع نوشتن یا Writable در JIT است را می‌توان با استفاده از ()mprotect غیر فعال کرد، به این معناست که JIT شروع به کامپایل کردن کد می‎کند و آن را درون حافظه (Memory) می‌نویسد این سپر  برای جلوگیری از بهره‌برداری‌های احتمالی از آن در حین اجرا محافظت می‌کند تا غیر قابل نوشتن باشد.جمع بندی:در PHP 8 شاهد تغییرات جدیدی خواهیم بود که PHP را در لیست زبان‎‌هایی که ارزش یادگیری و استفاده دارند نگه می‌دارد و باعث می‌شود که محبوبیت بیشتری بین توسعه دهندگان پیدا کند. شاید یکی از تغییراتی بسیار خوب PHP همان کامپایلر JIT باشد که باعث می‌شود PHP سریع‌تر باشد تا بتواند پا به حوضه‌های دیگر نیز باز کند همه‌ی توسعه دهنگان بی‌صبرانه منتظر نسخه جدید PHP هستند.منبع:https://7learn.com/programming/php/jit-compiler-in-php </description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Tue, 09 Jun 2020 14:09:49 +0430</pubDate>
            </item>
                    <item>
                <title>نسخه 8 زبان برنامه نویسی PHP</title>
                <link>https://virgool.io/@newworld/%D9%86%D8%B3%D8%AE%D9%87-8-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-php-obh7oyxlmcj8</link>
                <description>PHP 8فقط چند (10) روز دیگر تا انتشار نسخه 8 PHP فاصله داریم.امروز 2020 8 June انتشار اولیه June 18 2020جدول برنامه ریزی انتشار PHP 8 در سایت PHP.netجدول برنامه ریزی انتشار PHP 8از آنجا که می دانیم PHP 7 بسیار جذاب است ، پیشرفت های چشمگیری را نسبت به PHP 5 دارد ، یا از نظر سرعت یا عملکرد صحبت می کنیم. همچنین ، آن را برای ما به ارمغان می آورد.با این حال ، این اشتباه است که بگوییم یک زبان کامل و بدون نقص است بنابراین ، وقتی صحبت از PHP 8 می شود ، انتظارات کاربران بسیار زیاد است. خوب ، جایی که همه دوست دارند PHP 8 را ببینند ، دارای ویژگی های واقعی تر است. به این دلیل است که این ویژگی به شما کمک می کند تا از زبان های دیگر در یک پروژه PHP استفاده نکنید و فقط به خاطر زمان واقعی است.php 8نسخه های قبلی PHP تا الانتاکنون چندین نسخه از PHP تکامل یافته است. بنابراین ، اجازه دهید نسخه های PHP را که از قبل در بازار موجود است در اینجا بررسی کنیم.1.0 هشتم ژوئن 19952.0 اول نوامبر 19973.0 ششم ژوئن 1998 تا 20 اکتبر 20004.0 در 22 مه 2000 تا 23 ژوئن 20014.1 دهم دسامبر 2001 تا 12 مارس 20024.2 در 22 آوریل 2002 تا ششم سپتامبر 20024.3 در 27 دسامبر 2002 تا 31 مارس 20054.4 یازدهم ژوئیه 2005 7th اوت 20085.0 سیزدهم ژوئیه 2004 تا 5 سپتامبر 20055.1 در 24 نوامبر 2005 تا 24 آگوست 20065.2 در 2 نوامبر 2006 تا ششم ژانویه 20115.3 در 30 ژوئن 2009 تا 14 آگوست 20145.4 اول مارس 2012 تا 3 سپتامبر 20155.5 در 20 ژوئن 2013 تا 21 ژوئیه 20165.6 در 28 آگوست 2014 تا 31 دسامبر 20187.0 در 3 دسامبر 2015 تا 3 دسامبر 20187.1 اول دسامبر 2016 تا اول دسامبر 20197.2 در 30 نوامبر 2017 تا 30 نوامبر 20207.3 در 6 دسامبر 2018 تا دسامبر 2021حالت فقط در زمان (JIT) در 8 PHPدرست در زمان تلفیقی (Just in time) راهی برای بهینه سازی کد در حال اجرا است. این یک روش محبوب است که توسط ماشین مجازی جاوا (JVM) و همچنین محبوب V8 JavaScript VM از Google استفاده می شود. در حالی که هر دو از JIT استفاده می کنند. https://www.aparat.com/video/video/embed/videohash/ZP0dO/vt/frame در ابتدا توسعه PHP قبل از تکامل فعلی (PHP 7.x) بر بهبود عملکرد PHP با استفاده از JIT متمرکز بود. این تلاش باعث بهبود پیشرفتهای اقتصادی در معیارها شد ، اما ثابت شد که پیشرفتهای اندکی در برنامه های دنیای واقعی مانند وردپرس یا جوملا به همراه دارد.پس از انجام کار برای PHP 7.0 و ارائه پیشرفت های چشمگیر در آن ، پیشرفت های عملکرد در نسخه های 7.1 و 7.2 نسبتاً متوسط ​​بوده است. به همین دلیل این تیم دوباره در حال اجرای JIT بوده است.از آنجا که PHP نرم افزاری منبع باز است ، توسعه دهندگان برای بارگیری و کامپایل کردن کد منبع رایگان هستند. با این حال ، بسیاری از مردم از احتمال کامپایل کردن نرم افزار خود جلوگیری می کنند. خوشبختانه ، یک تصویر Docker در دسترس است که به توسعه دهندگان امکان می دهد جدیدترین ساخته های PHP JIT را به راحتی امتحان کنند.هر دو JIT و 8.0.0 در آینده از PHP جذاب هستند ، اما هر دو ویژگی قابل توجهی در آینده باقی می مانند. و به خصوص برای JIT ، مراحل کوتاه زندگی PHP برای اجرای JIT ایده آل نیست - این با فرآیندهای مداوم در حال اجرا مانند Node.js یا Java مقایسه می شود.چست JITتوضیح: JIT به اختصار رسیده کلمات Just In Time است، JIT یک تکنیک است که کدهای نرم‌افزار ما را در حال اجرا کامپایل (Compile) یا جمع‌آوری می‌کند که می‌توان در عوض کامپایلرهای دیگر از آن استفاده کرد.شاید تا به حال اسم JIT به گوشتان نخورده است پس اجازه دهید اول توضیح بدهیم که JIT چیست؟ شاید شما از قبل می‌دانستید که PHP یک زبان تفسیر شده است، به این معنا که کد شما قبل از اجرا شدن نیازی به کامپایل (Compile) شدن ندارد مثل زبان‌های C و ++C. در عوض آن، PHP کد شما را می‌خواند و آن را اجرا می‌کند به عبارت دیگر شما کدی نمی‌نویسید که درون کدهای سطح پایین کامپایل شود تا توسط کامپیوتر اجرا بشوند، اما شما یک سند (Script) از کدها را به PHP می‌دهید تا اجرا شوند.چرا JIT در PHP معرفی شده است؟همانطور که قبلاً نیز اشاره کردیم ، HHVM (زمان جایگزینی که فیس بوک توسعه داده و از آن استفاده می کند) از JIT استفاده می کند. در مقایسه با موتور رسمی PHP که در PHP 7.0 مستقر شده است ، حتی سریعتر و بهتر نیز می شود.بنابراین ، به دلیل محبوبیت شدید HHVM یا تقاضای زیاد جامعه PHP در سراسر جهان ، مجدداً به جستجوی JIT Engine بروید ، گروه Zend و PHP برای این کار آماده هستند و همچنین مصمم هستند که آن را در نسخه اصلی بعدی PHP 8.0 معرفی کنند.در حالی که کدی که در PHP 5 نوشته شده است در PHP 7 حتی بدون تغییر اجرا می شود ، به عنوان یک نتیجه ، عملکرد دو برابر می شود. این به دلیل تغییرات در موتور نیست بلکه بهینه سازی های دیگر در PHP 7.0 است.از این رو ، می توانیم باور داشته باشیم که مطمئناً بروزرسانی در موتور باعث بهبود عملکرد در چین های مختلف می شود. همانطور که می دانیم استاندارد HHVM ، سطح عملکرد به راحتی می تواند دو برابر شود ، یا می توانیم بگوییم وقتی کلماتی که برای PHP 7 نوشته شده است در نسخه 8.0 پیاده سازی شود ، زمان اجرای آن نصف می شود.از آنجا که بسیاری از پیاده سازی های چارچوب .Net و پیاده سازی جاوا از قبل به JIT وابسته هستند ، خوب است که PHP از ترکیب پویا استفاده کند و عملکرد آن را تا سطح بعدی افزایش دهد.زبان PHP برای زمینه های غیر وبعلاوه بر آن PHP برای زبان سمت سرور یک گزینه کاملا مناسب در نظر گرفته شده است. PHP دیگر مثل گذشته کند نیست، زمانش رسیده است که به توانایی‌های PHP اضافه کنیم مثل تحلیل و بررسی داده‌ها (Data analysis)، رندر (Render) کردن عکس‌های سه بعدی (3D) و دو بعدی (2D).در گذشته کدهایی با کارایی بالا توسط زبان‌های برنامه‌نویسی C و ++C به جای پیکیج (Package) زبان PHP نوشته می‌شد. برای مثال phpredis همیشه 6 - 7 برابر از predis سریع‌تر است، اگر کد PHP به جای ترجمه شدن کامپایل بشود ما پکیج‌های PHP را خواهیم داشت که همان سرعت و کارایی را دارند که با زبان‌های برنامه‌نویسی مانند C و ++C نوشته شده‌اند.بنابراین کامپایلر JIT انتخاب شد چون جالب‌ترین و بهترین جهت یا مسیر است.امنیت در JITتوضیح: JIT کد عملیاتی (OpCode) را به کد ماشین کامپایل می‌کند و آن‌ها را اجرا می‌کند اما دلایل مشکلات امنیتی این است که حافظه (Memory) یا باید قابل نوشتن (Writable) باشد یا قابل اجرا (Executable) شدن که به اصطلاح آن‌ها را با علامت‌های W^X نشان می‌دهند.زمانی که PHP شروع به اجرا شدن می‌کند، سپری که مانع نوشتن یا Writable در JIT است را می‌توان با استفاده از ()mprotect غیر فعال کرد، به این معناست که JIT شروع به کامپایل کردن کد می‎کند و آن را درون حافظه (Memory) می‌نویسد این سپر  برای جلوگیری از بهره‌برداری‌های احتمالی از آن در حین اجرا محافظت می‌کند تا غیر قابل نوشتن باشد.برنامه های PHP چگونه Compiled می شوند؟زبان PHP یک ماشین مجازی به اسم Zend VM دارد، چرا آن را ماشین مجازی صدا می‌زنیم؟ چون مثل کامپیوتر شما برای اجرا کردن کدها عمل می‌کند، بر اساس توضیح بالا خواندن و اجرا کردن کد بر عهده‌ی ماشین مجازی است. اما قبل از آن کد شما توسط PHP خوانده و به کدهای عملیاتی (Opcode) (کدهای عملیاتی یا Opcode زبانی است که Zend VM آن را متوجه می‌شود و توسط Zend Vm ترجمه می‌شوند) و بعد از آن Zend VM می‌تواند کدهای عملیاتی (Opcode) را ترجمه کند. در زیر شما یک تصویر را برای درک بیشتر مشاهده می‌کند.برای اینکه compilation فقط در صورت لزوم اتفاق بیفتد ، JIT به عنوان یک بخش تقریباً مستقل از OPcache و افزونه ای برای ذخیره کردن opcodes اجرا می شود. علاوه بر این ، JIT دستورالعمل های ایجاد شده برای Zend VM را بعنوان نمایندگی واسطه در PHP درمان می کند. علاوه بر این ، برای ساخت میزبان کد به عنوان CPU به طور مستقیم و نه Zend VM ، سپس کد ماشین وابسته به معماری تولید می کند.ویژگی های جدید php 8انواع اتحادیه rfcبا توجه به نوع پویا تایپ شده در PHP ، موارد بسیاری وجود دارد که انواع اتحادیه ها می توانند مفید باشند. انواع اتحادیه مجموعه ای از دو یا چند نوع است که نشان می دهد که یکی از این موارد قابل استفاده است.public function foo(Foo|Bar $input): int|float;توجه داشته باشید که voidهرگز نمی تواند جزئی از نوع اتحادیه باشد ، زیرا نشان دهنده &quot;ارزش بازگشتی به هیچ وجه&quot; نیست. علاوه بر این ، nullableاتحادیه ها را می توان با استفاده از |nullیا ?نماد موجود نوشت :public function foo(Foo|null $foo): void;  public function bar(?Bar $bar): void;ویژگی های rfcویژگی ها ، که معمولاً با زبان های دیگر به عنوان حاشیه نویسی شناخته می شوند ، راهی برای افزودن داده های متا به کلاس ها ، بدون نیاز به تجزیه جلد سند ، ارائه می دهد.همانطور که برای یک نگاه سریع ، مثالی از آنچه که از ویژگی ها به نظر می رسد ، از RFC:use App\Attributes\ExampleAttribute; &lt;&lt;ExampleAttribute&gt;&gt; class Foo {    &lt;&lt;ExampleAttribute&gt;&gt;     public const FOO = &#039;foo&#039;;     &lt;&lt;ExampleAttribute&gt;&gt;     public $x;     &lt;&lt;ExampleAttribute&gt;&gt;     public function foo(&lt;&lt;ExampleAttribute&gt;&gt; $bar) { }}&lt;&lt;PhpAttribute&gt;&gt; class ExampleAttribute {     public $value;  public function __construct($value) {         $this-&gt;value = $value;    }}اگر می خواهید در چگونگی کارکرد صفات ، گشت و گذار کنید و چگونه می توانید خود را بسازید. می توانید در مورد این صفحات به عمق صفات مطالعه کنید.ارتقاء دارایی سازنده rfcاین RFC برای ایجاد اشیاء با ارزش یا اشیاء انتقال داده ، قند نحوی را اضافه می کند. به جای مشخص کردن خصوصیات کلاس و سازنده برای آنها ، اکنون PHP می تواند آنها را در یک ترکیب کند.به جای انجام این کار:class Money {     public Currency $currency;  public int $amount;  public function __construct(         Currency $currency,         int $amount,     ) {         $this-&gt;currency = $currency;         $this-&gt;amount = $amount;    }}اکنون می توانید این کار را انجام دهید:class Money {     public function __construct(         public Currency $currency,         public int $amount,     ) {}}تغییرات زیادی در این نحو وجود دارد ، به RFC بروید تا در مورد آنها بخوانید.staticنوع بازگشت جدید rfcاگرچه بازگشت از قبل امکان پذیر بود self، staticتا زمان PHP 8 یک نوع بازگشت معتبر نبود. با توجه به طبیعت تایپ شده PHP ، این ویژگی است که برای بسیاری از توسعه دهندگان مفید خواهد بود.class Foo
{
    public function test(): static
    {
        return new static();
    }
}نوع جدید rfc mixed برخی ممکن است آن را یک شر ضروری بدانند: mixedنوع باعث بسیاری از احساسات مختلط می شود. استدلال بسیار خوبی برای بیان آن وجود دارد: یک نوع از دست رفته می تواند به معنی چیزهای زیادی در PHP باشد:یک عملکرد هیچ چیز یا تهی را برنمی گرداندما در حال انتظار یکی از انواع مختلف هستیمما در حال انتظار نوعی هستیم که نمی توان در PHP به آن اشاره کردبه دلایل فوق ، چیز خوبی است که mixedنوع آن اضافه می شود. mixedخود به معنی یکی از این انواع است:arrayboolcallableintfloatnullobjectresourcestringتوجه داشته باشید که mixedمی تواند به عنوان یک پارامتر یا نوع خاصیت استفاده شود ، نه فقط به عنوان یک نوع بازگشت.همچنین توجه داشته باشید که از mixedقبل شامل شده null، مجاز نیست آن را باطل کند. موارد زیر خطایی را ایجاد می کند:// Fatal error: Mixed types cannot be nullable, null is already part of the mixed type. function bar(): ?mixed {}بیان را پرتاب کنید rfcاین RFC throw از بیانیه بودن به یک عبارت تغییر می کند ، و این باعث می شود که در بسیاری از مکان های جدید استثناء ایجاد شود:
$triggerError = fn () =&gt; throw new MyError(); $foo = $bar[&#039;offset&#039;] ?? throw new OffsetDoesNotExist(&#039;offset&#039;);نقشه های ضعیف rfcبا استفاده از RFC dobrefs که در PHP 7.4 اضافه شده است ، WeakMapپیاده سازی ای در PHP 8. اضافه شده است. WeakMapsاشیاء را ذکر کنید. اینها به اشیاء مراجعه کنید ، که از جمع آوری زباله جلوگیری نمی کند.به عنوان مثال از ORM ها استفاده كنید ، آنها غالباً انبارهایی را اجرا می كنند كه برای بهبود عملكرد روابط بین موجودیت ها ، به كلاس های موجودیت مراجعه می كنند. این اشیاء موجودیت نمی توانند زباله جمع آوری شوند ، مادامی که این حافظه پنهان به آنها اشاره داشته باشد ، حتی اگر حافظه نهان تنها چیزی باشد که به آنها مراجعه می کند.اگر این لایه حافظه نویسی به جای آن از منابع و نقشه های ضعیف استفاده کند ، PHP هنگامی که هیچ چیز دیگری به آنها اشاره نمی کند ، این اشیاء را جمع می کند. به ویژه در مورد ORM ها ، که می توانند صدها نفر را مدیریت کنند ، اگر نه هزاران شخص در یک درخواست. نقشه های ضعیف می توانند روشی بهتر و مناسب تر برای برخورد با این اشیاء را ارائه دهند.در اینجا نقشه های ضعیف به نظر می رسد ، مثالی از RFC:class Foo {     private WeakMap $cache;  public function getSomethingWithCaching(object $obj): object {         return $this-&gt;cache[$obj]           ??= $this-&gt;computeSomethingExpensive($obj);    }}اجازه دادن ::classبه اشیاء rfcیک ویژگی کوچک و در عین حال مفید ، جدید: اکنون می توانید ::classبه جای استفاده از get_class()آنها ، از اشیاء استفاده کنید. به همان روش کار می کند get_class().$foo = new Foo();  var_dump($foo::class);صید بدون گرفتن rfcهر زمان که قبل از PHP 8 می خواستید یک استثنا را بدست آورید ، مجبور بودید که بدون توجه به اینکه از آن متغیر استفاده کرده اید ، آن را در یک متغیر ذخیره کنید. با استفاده از صیدهای بدون گرفتن ، می توانید متغیر را حذف کنید ، بنابراین به جای این موارد:
try {     // Something goes wrong} catch (MySpecialException $exception) {Log::error(&amp;quotSomething went wrong&amp;quot);}اکنون می توانید این کار را انجام دهید:
try {     // Something goes wrong} catch (MySpecialException) {     Log::error(&amp;quotSomething went wrong&amp;quot);}توجه داشته باشید که لازم است همیشه نوع آن را مشخص کنید ، شما اجازه ندارید که خالی کنید catch. اگر می خواهید همه موارد استثنا و خطا را بدست آورید ، می توانید Throwableبه عنوان نوع گیرنده از آن استفاده کنید .ردیابی کاما در لیست پارامترها rfcدر هنگام فراخوانی یک تابع از قبل امکان پذیر است ، هنوز پشتیبانی لیست کاما در لیست پارامترها وجود ندارد. اکنون در PHP 8 مجاز است ، به این معنی که می توانید موارد زیر را انجام دهید:

public function(     string $parameterA,     int $parameterB,     Foo $objectfoo,) {     // …}اشیاء را از رابط ایجاد کنید DateTimeدر حال حاضر می توانید با DateTimeاستفاده از یک DateTimeImmutableشیء یک شی ایجاد کنید DateTime::createFromImmutable($immutableDateTime)، اما روش دیگر مشکل بود. با اضافه کردن DateTime::createFromInterface()و DatetimeImmutable::createFromInterface()اکنون یک روش کلی برای تبدیل DateTimeو DateTimeImmutableاشیاء به یکدیگر وجود دارد.DateTime::createFromInterface(DateTimeInterface $other);  DateTimeImmutable::createFromInterface(DateTimeInterface $other);رابط کاربری جدید Stringable rfcتوضیح: Stringableرابط می توان برای تایپ هر چیزی اشاره است که یک رشته و یا ابزار __toString(). علاوه بر این ، هر زمان که کلاس پیاده سازی می کند __toString()، به طور خودکار رابط پشت صحنه را پیاده سازی می کند و نیازی به اجرای دستی آن نیست.class Foo {     public function __toString(): string {         return &#039;foo&#039;;    }}  function bar(Stringable $stringable) { /* … */ }  bar(new Foo()); bar(&#039;abc&#039;);str_contains()عملکرد جدید rfcبرخی ممکن است بگویند مدت زمان طولانی است ، اما ما در نهایت لازم نیست که دیگر به آن اعتماد strposکنیم تا بدانیم که یک رشته شامل رشته دیگری است یا خیر.به جای انجام این کار:if (strpos(&#039;string with lots of words&#039;, &#039;words&#039;) !== false) { /* … */ }اکنون می توانید این کار را انجام دهیدif (str_contains(&#039;string with lots of words&#039;, &#039;words&#039;)) { /* … */ }توابع جدید str_starts_with()و str_ends_with()دو مورد دیگر که به مدت طولانی به تأخیر افتاده اند ، این دو عملکرد اکنون در هسته اضافه شده اند. rfcstr_starts_with(&#039;haystack&#039;, &#039;hay&#039;); // true
str_ends_with(&#039;haystack&#039;, &#039;stack&#039;); // trueعملکرد جدید روابط عمومی fdiv()توضیح: fdiv()عملکرد جدید کاری مشابه عملکردها fmod()و intdiv()عملکردها را انجام می دهد ، که اجازه می دهد تقسیم 0 شود. به جای خطاهایی که می کنید INF، -INFیا NANبسته به مورد.عملکرد جدید get_debug_type() روابط عمومیتوضیخ: get_debug_type()نوع متغیر را برمی گرداند. به نظر می رسد چیزی gettype()می تواند انجام دهد؟ get_debug_type()بازده مفیدتری را برای آرایه ها ، رشته ها ، کلاس ها و اشیاء ناشناس بر می گرداند.به عنوان مثال ، فراخوانی gettype()در کلاس \Foo\Barبرمی گردد object. استفاده از get_debug_type()آن ، نام کلاس را برمی گرداند.لیست کامل از تفاوت بین get_debug_type()و gettype()می توان در RFC پیدا شده است.عملکرد جدید get_resource_id() روابط عمومیمنابع با توجه به منابع خارجی متغیرهای ویژه در PHP هستند. یک مثال یک اتصال MySQL و دیگری دسته پرونده است.به هر یک از این منابع یک شناسه اختصاص می یابد ، اگرچه پیش از این تنها راه شناخت این شناسه ، انتقال منابع به این موارد بود int:$resourceId = (int) $resource;در php نسخه 8 get_resource_id()توابع را اضافه می کند و این عمل را آشکارتر و بی خطر تر می کند:$resourceId = get_resource_id($resource);روش های انتزاعی در بهبود صفات rfcصفات می توانند روشهای انتزاعی را مشخص كنند كه باید توسط کلاسهایی كه از آنها استفاده می شود اجرا شود. هرچند یک نتیجه احتیاط وجود دارد: قبل از PHP 8 امضای این پیاده سازیها تأیید نشده بود. موارد زیر معتبر بود:trait Test {     abstract public function test(int $input): int;}  class UsesTrait {     use Test;  public function test($input) {         return $input;    }}در PHP 8 هنگام استفاده از یک صفت و اجرای روشهای انتزاعی ، اعتبار صحیح امضای روش را انجام می دهد. این بدان معنی است که باید به جای آن بنویسید:class UsesTrait {     use Test;  public function test(int $input): int {         return $input;    }}اجرای شیء token_get_all() این token_get_all()تابع مجموعه ای از مقادیر را برمی گرداند. این RFC PhpToken با یک PhpToken::getAll()متد کلاس اضافه می کند . این پیاده سازی با اشیاء به جای مقادیر ساده کار می کند. حافظه کمتری مصرف می کند و خواندن آن راحت تر است.rfcترفندهای نحوی متغیر rfcاز RFC: &quot;Uniform Variable Syntax RFC تعدادی از ناسازگاری ها در نحو متغیر PHP را برطرف کرده است.یادداشتهای مربوط به عملکردهای داخلی را تایپ کنید خارجیبسیاری از مردم تن به تن در به اضافه کردن حاشیه نویسی نوع مناسب به تمام توابع داخلی. این یک مسئله طولانی مدت بود و سرانجام با کلیه تغییرات ایجاد شده در PHP در نسخه های قبلی قابل حل بود. این بدان معنی است که توابع و روشهای داخلی اطلاعات کاملی در بازتاب دارند.همیشه در دسترس ext-jsonپیش از این امکان کامپایل PHP بدون پسوند JSON وجود داشت ، این دیگر امکان پذیر نیست. از آنجا که JSON بسیار مورد استفاده قرار می گیرد ، بهتر است توسعه دهندگان همیشه بتوانند به جای نیاز به اطمینان از وجود اولین پسوند ، به وجود آن اعتماد کنند.تغییرات ایجاد می شودهمانطور که قبلاً ذکر شد: این یک بروزرسانی اساسی است و بنابراین تغییرات شکنی به وجود خواهد آمد. بهترین کار اینست که به لیست کامل تغییرات در سند UPGRADING نگاهی بیندازید .بسیاری از این تغییرات شکستگی در نسخه های 7. نسخه قبلی کاهش یافته است ، بنابراین اگر شما در طول سال ها به روز بوده اید ، ارتقاء آن به PHP 8 خیلی سخت نیست.خطاهای نوع سازگار rfcتوابع تعریف شده توسط کاربر در PHP قبلاً پرتاب می شوند TypeErrors، اما توابع داخلی این کار را نمی کنند ، بلکه آنها هشدارهایی را منتشر می کردند و برگشتند null. از PHP 8 رفتار توابع داخلی سازگار بوده است.هشدارهای طبقه بندی مجدد موتور rfcبسیاری از خطاهایی که قبلاً فقط باعث اخطارها یا اخطارها شده اند ، به خطاهای مناسب تبدیل شده اند. هشدارهای زیر تغییر کردمتغیر تعریف نشده: Errorاستثناء به جای اطلاع رسانیفهرست آرایه نامشخص: هشدار به جای اخطارتقسیم بر صفر: DivisionByZeroErrorاستثناء به جای هشدارتلاش برای افزایش / کاهش املاک &quot;٪ s&quot; از غیر شیء: Errorاستثناء به جای هشدارتلاش برای تغییر &quot;٪ s&quot; ویژگی غیرمجاز: Errorاستثناء به جای هشدارتلاش برای اختصاص &quot;٪ s&quot; ویژگی غیرمجاز: Errorاستثناء به جای هشدارایجاد شیء پیش فرض از مقدار خالی: Errorاستثناء به جای هشدارتلاش برای به دست آوردن ویژگی &quot;٪ s&quot; از غیر شیء: اخطار به جای اخطارویژگی نامشخص:٪ s :: $٪ s: هشدار به جای اعلامنمی توان عنصر را به آرایه اضافه کرد زیرا عنصر بعدی در حال حاضر اشغال شده است: Errorاستثنا به جای هشدارنمی توان در متغیر غیر آرایه جبران کرد: Errorاستثناء به جای هشدارنمی توان از یک مقیاس مقیاس به عنوان یک آرایه استفاده کرد: Errorاستثناء به جای هشدارفقط آرایه ها Traversablesقابل باز کردن هستند: TypeErrorاستثناء به جای هشداراستدلال نامعتبر ارائه شده برای foreach (): TypeErrorاستثناء به جای هشدارنوع جبران غیرقانونی: TypeErrorاستثناء به جای هشدارنوع جبران غیرقانونی در صادر یا خالی: TypeErrorاستثنا به جای هشدارنوع جبران غیرقانونی در TypeErrorعدم تنظیم: استثناء به جای هشدارآرایه به تبدیل رشته: هشدار به جای توجهشناسه منبع #٪ d به عنوان جبران ، ریخته گری به عدد صحیح (٪ d): هشدار به جای توجهبازیگران رشته افست رخ داده است: هشدار به جای اخطارجبران رشته غیرمجاز:٪ d: هشدار به جای اخطارنمی توان رشته ای خالی را به یک جبران رشته داد: Errorاستثناء به جای هشدارمنبع تأمین شده منبع جریان معتبری نیست: TypeErrorاستثناء به جای هشداراپراتور @ دیگر خطاهای مهلک را خاموش نمی کندممکن است این تغییر ممکن است خطاهایی را که دوباره قبل از PHP 8 پنهان شده اند ، نشان دهد display_errors=Off! مطمئن شوید که سرورهای تولیدی خود را تنظیم کنید!سطح گزارش خطای پیش فرضاین در حال حاضر E_ALLبه جای همه چیز اما E_NOTICEو E_DEPRECATED. این بدان معناست که بسیاری از خطاها ممکن است ظاهر شوند که قبلاً در سکوت نادیده گرفته شده بودند ، اگرچه احتمالاً پیش از PHP 8 وجود داشته است.حالت خطای پیش فرض PDO rfcاز RFC: حالت خطای پیش فرض فعلی برای PDO خاموش است. این بدان معناست که وقتی یک خطای SQL رخ می دهد ، هیچ گونه خطایی یا هشدار ممکن است منتشر نشود و هیچ استثنائی از آن پرتاب نشود ، مگر اینکه توسعه دهنده مسئولیت رسیدگی به خطای صریح خود را انجام دهد.این RFC خطای پیش فرض را PDO::ERRMODE_EXCEPTIONدر PHP 8 تغییر می دهد .تقدم جمع بندی rfcاگرچه قبلاً در PHP 7.4 کاهش یافته است ، اکنون این تغییر اعمال می شود. اگر می خواهید چیزی مثل این را بنویسید:echo &amp;quotsum: &amp;quot . $a + $b;پی اچ پی قبلاً اینگونه تفسیر می کند:echo (&amp;quotsum: &amp;quot . $a) + $b;در PHP 8 آن را به گونه ای تبدیل می کند که به صورت زیر تفسیر شود:echo &amp;quotsum: &amp;quot . ($a + $b);بررسی نوع دقیق تر برای اپراتورهای حساب و بیت بیت rfcقبل از PHP 8 ، امکان استفاده از عملگرهای حسابی یا بیت بیت بر روی آرایه ها ، منابع یا اشیاء وجود داشت. این دیگر امکان پذیر نیست و موارد زیر را پرتاب می کند TypeError:[] % [42];$object + 4;امضای روش بازتاب تغییر می کندسه امضای روش کلاس های بازتاب تغییر یافته اند:ReflectionClass::newInstance($args); ReflectionFunction::invoke($args); ReflectionMethod::invoke($object, $args);اکنون تبدیل شده اند:ReflectionClass::newInstance(...$args); ReflectionFunction::invoke(...$args); ReflectionMethod::invoke($object, ...$args);راهنمای ارتقا مشخص می کند که اگر این کلاس ها را گسترش دهید و هنوز هم می خواهید از PHP 7 و PHP 8 پشتیبانی کنید ، امضاهای زیر مجاز هستند:ReflectionClass::newInstance($arg = null, ...$args); ReflectionFunction::invoke($arg = null, ...$args); ReflectionMethod::invoke($object, $arg = null, ...$args);خطای مهمی برای امضاهای روش ناسازگار rfcاز RFC: خطاهای وراثت به دلیل امضاهای روش ناسازگار در حال حاضر یا بسته به علت خطا و سلسله مراتب ارث ، خطای مهلک یا هشداری را به وجود می آورند.منابع:https://7learn.com/programming/php/jit-compiler-in-phphttps://stitcher.io/blog/new-in-php-8https://react-etc.net/entry/php-8-0-0-release-date-and-jit-statushttps://www.covetus.com/blog/php-80-the-upcoming-version-of-php-and-the-inclusion-of-jitبرنامه انتشار php 8 در سایت php.nethttps://wiki.php.net/todo/php80(این مطلب بروز رسانی خواهد شد و شما میتوانید با اعلام نظرات و اصلاحات خود در بخش کامنت ها به من در بهبود این مقاله کمک کنید)</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Tue, 09 Jun 2020 02:56:37 +0430</pubDate>
            </item>
                    <item>
                <title>دانلود آهنگ Don Diablo feat. Brando - Congratulations</title>
                <link>https://virgool.io/@newworld/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A2%D9%87%D9%86%DA%AF-don-diablo-feat-brando-congratulations-lnx9n9mnphrs</link>
                <description>دانلود آهنگ Don Diablo feat. Brando - Congratulationsآهنگ Don Diablo feat. Brando - Congratulationsمتن ترانه‌هاDreamin&#x27;Dreamin&#x27; &#x27;bout the days that were good, yeahTake meTake me back to music in my room, yeahAll my life, I&#x27;ve been searchingLookin&#x27; for something perfectThat only led me back to blueMight be a little brokenBut I&#x27;ve got my eyes wide openI&#x27;m gonna say it till it&#x27;s trueLately, I&#x27;ve been standingI don&#x27;t need no leg roomFuck congratulationsNo more expectationsDon&#x27;t care &#x27;bout my FOMOI&#x27;ve been ridin&#x27; soloSo congratulations(So congratulations)DailyDaily I&#x27;ve been reachin&#x27; for the stars, yeahMade itMade it but I only got so far, yeahAll my life, I&#x27;ve been searchingLookin&#x27; for something perfectThat only led me back to blueMight be a little brokenBut I&#x27;ve got my eyes wide openI&#x27;m gonna say it till it&#x27;s trueLately, I&#x27;ve been standingI don&#x27;t need no leg roomFuck congratulationsNo more expectationsDon&#x27;t care &#x27;bout my FOMOI&#x27;ve been ridin&#x27; soloSo congratulations(So congratulations)Can&#x27;t do this over againAnd over again, and over againI know it&#x27;s hard to admitIt&#x27;s hard to admit, it&#x27;s hard to admitIt&#x27;s half a quarter past tenI wanna give in, I wanna give inCan&#x27;t do this over again, and over againLately, I&#x27;ve been standingI don&#x27;t need no leg roomFuck congratulationsNo more expectationsDon&#x27;t care &#x27;bout my FOMOI&#x27;ve been ridin&#x27; soloSo congratulations(So congratulations)Lately, I&#x27;ve been standingI don&#x27;t need no leg roomFuck congratulationsNo more expectationsDon&#x27;t care &#x27;bout my FOMOI&#x27;ve been ridin&#x27; soloSo congratulations(So congratulations)منبع: LyricFindدانلود آهنگ با کیفیت 128</description>
                <category>Developers</category>
                <author>Developers</author>
                <pubDate>Wed, 03 Jun 2020 22:19:55 +0430</pubDate>
            </item>
            </channel>
</rss>