Прочтите английскую версию этого документа: English
Прочтите этот документ на других языках: английском, упрощенном китайском .
С сильным ростом Go и NodeJS доля PHP на рынке постепенно снижается, но официально PHP все еще остается в сфере Web -программирования. Чем больше они пытаются удержаться, тем труднее удержаться за некоторые вещи. polarphp использует соответствующие функции NodeJS и Go для повторной инкапсуляции zendVM , удаления некоторых устаревших функций PHP и сильных Web атрибутов, а также реализации нового набора среды выполнения libpdk для превращения языка PHP в действительно универсальный язык сценариев, расширяющий возможности PHP с асинхронным программированием, сопрограммами, потоками, встроенной поддержкой unicode , стандартным файловым IO и другими функциями, позволяющими PHP -программистам не только делать web -приложения, но и спокойно работать с реальными серверными приложениями. polarphp — это не новый язык, а новый компилятор и среда выполнения языка PHP в дополнение к официальному.
PHP и удаление устаревших функций языка. unicode Ввиду ограниченности ресурсов на развитие, план развития ориентировочно выглядит следующим образом:
PHP .lit для трансплантации проекта LLVMpolarphp с использованием среды регрессионного тестирования phplitpolarvm и завершите инфраструктуру виртуальной машины.polarphp в набор инструкций и пока не определяйте уровень IR.phplit для тестирования всех скомпилированных модулей, от структуры языка до набора инструкций.PHP GCPHP libpdk (часть cpp ).polarphp за минимальное количество шагов.PHP (реализованной с использованием кода PHP с базовой поддержкой libpdk ). polarphp git clone https://github.com/polarphp/polarphp.git
cd polarphp
git submodule init
git submodule update
git checkout v0.0.1-alpha
./devtools/scripts/build_polarphp.sh
В это время скрипт начинает компилировать связанные изображения, что занимает много времени. Подождите терпеливо. Дождитесь завершения компиляции и запустите:
docker images
На данный момент убедитесь, что на выходе имеется следующее изображение:
Если проблем нет, начинаем проверять, нормально ли работает polarphp в зеркале.
docker run --rm -it polarphp_debug
После входа в контейнер введите нашу программу командной строки polarphp
polar --version
Если вы получите следующий вывод:
polarphp 0.0.1-git (built: 2019-01-27 12:22)
Copyright (c) 2016-2018 The polarphp foundation (https://polar.foundation)
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
Поздравляем, вы успешно скомпилировали среду выполнения polarphp . При компиляции образа мы поместили тестовый скрипт в папку ~/temp/
if ( function_exists ( ' phpretrieve_version_str ' )) {
echo " version str: " . php retrieve_version_str () . "n" ;
}
if ( function_exists ( ' phpretrieve_major_version ' )) {
echo " major version: " . php retrieve_major_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_minor_version ' )) {
echo " minor version: " . php retrieve_minor_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_patch_version ' )) {
echo " patch version: " . php retrieve_patch_version () . "n" ;
}Вы можете запустить следующую команду:
polar ~/temp/main.php
Если ошибок нет, вы получите следующий вывод:
version str: polarphp 0.0.1-git
major version: 0
minor version: 0
patch version: 1
Благодарим вас за тестирование polarphp . Если у вас есть какие-либо вопросы, отсканируйте QR-код WeChat ниже, чтобы присоединиться к групповому общению.
В настоящее время мы ориентируемся только на пользователей в Китае, поэтому для общения мы используем группы WeChat и QQ . Заинтересованные студенты могут отсканировать код, чтобы присоединиться.
PS: При сканировании QR-кода укажите цель визита, например: изучение
polarphpили энтузиастыPHP
polarphp проводит вторичную разработку поверх проекта языка php и соблюдает соглашение о проекте php . Подробную информацию см. в: Соглашение о проекте.
==========================