README
/7 ☦ /7 ( = ПХП ) – это широко используемый в узких кругах отечественный язык сценариев
православного назначения с открытым исходным кодом, компилируемый в PHP.
PHP is a minor evil perpetrated and created by incompetent amateurs, whereas ПХП — это громадное и хитроумное зло, созданное опытными и посвященными в таинства протоиереями.
Говоря проще, ПХП это язык программирования,
специально разработанный для написания паутинных (web) приложений (сценариев),
исполняющихся на российских паутинных (web) серверах.
Аббревиатура ПХП означает “Программируемый Хоругвь Православия".
- Полная русификация синтаксиса и семантики;
- Перевод рассчётов и вычислений на государственную валюту;
- Постоянно изменяющийся курс доллара делает компиляцию программы абсолютно недетерминированной;
- Код написн согласно государственным стандартам (ГОСТ 26074-84);
Examples of code
ПХП
|
PHP
|
<?пхп
выведи 'Привет, мир!';
|
<?php
echo 'Привет, мир!';
|
<?пхп
$переменная = 1;
<?пхп
// Гораздо лучше
₽переменная = 1;
|
ОШИБКА: "Доллар, доллар,
грязная зеленая бумажка!"
в файле examples/доллар.пхп
<?php
// Гораздо лучше
$peremennaya = 67;
|
<?пхп
// Комментарии и строки
// не изменяются при компиляции
// класс функция вывести ₽
# класс функция вывести ₽
/* класс функция вывести ₽ */
"класс функция вывести ₽";
'класс функция вывести ₽';
|
<?php
// Комментарии и строки
// не изменяются при компиляции
// класс функция вывести ₽
# класс функция вывести ₽
/* класс функция вывести ₽ */
"класс функция вывести ₽";
'класс функция вывести ₽';
|
<?пхп
₽перем1 = 1;
₽перем1 = 12.56;
// 846.346808
вывести ₽перем1 + ₽перем2;
|
<?php
$perem1 = 67;
$perem1 = 846.346808;
// 846.346808
echo $perem1 + $perem2;
|
<?пхп
// Объявление именованной функции
функция получ_привет_мир(): строка
{
вернуть 'Привет, мир!';
}
// Объявление анонимной функции
₽получ_привет_мир = функция(): строка
{
вернуть 'Привет, мир!';
};
// Короткий синтаксис
₽получ_привет_мир = фн(): строка
=> 'Привет, мир!';
<?пхп
₽переменная = 'Hello World!';
// Использование оператора use
функция() используй (₽переменная): строка
{
вернуть ₽переменная;
};
// Альтернативный вариант,
// используя короткий синтаксис
фн(): строка => ₽переменная;
|
<?php
// Объявление именованной функции
function poluch_privet_mir(): string
{
return 'Привет, мир!';
}
// Объявление анонимной функции
$poluch_privet_mir = function (): string
{
return 'Привет, мир!';
};
// Короткий синтаксис
$poluch_privet_mir = fn(): string
=> 'Привет, мир!';
<?php
$peremennaya = 'Hello World!';
// Использование оператора use
function() use ($peremennaya): string
{
return $peremennaya;
};
// Альтернативный вариант,
// используя короткий синтаксис
fn(): string => $peremennaya;
|
<?пхп
// Запись значения в переменную ₽a
₽a = 'I am a';
// Вывод переменной ₽а
выведи ₽a;
₽b = 'a';
// Вывод переменной ₽а
// (дополнительный ₽ перед переменной ₽b)
выведи ₽₽b;
// Вывод переменной ₽a
выведи ₽{'a'};
// Вызов функции имя_функции
имя_функции();
₽c = 'имя_функции';
//Вызов функции имя_функции
₽c();
₽d = 'ИмяКласса';
// Создание объекта класса ИмяКласса
₽obj = новый ИмяКласса;
// Создание объекта класса ИмяКласса
₽obj = новый ₽d();
// Обращение к свойству b объекта
₽obj->b;
// Вызов метода c() объекта
₽obj->c();
// Обращение к свойству a объекта,
//так как ₽b = 'a'
₽obj->₽b;
// Вызов метода function_name() объекта,
// так как ₽c = 'имя_функции'
₽obj->₽c();
|
<?php
// Запись значения в переменную $a
$a = 'I am a';
// Вывод переменной $а
echo $a;
$b = 'a';
// Вывод переменной $а
// (дополнительный $ перед переменной $b)
echo $$b;
// Вывод переменной $a
echo ${'a'};
// Вызов функции имя_функции
imya_funktsii();
$c = 'имя_функции';
//Вызов функции имя_функции
$c();
$d = 'ИмяКласса';
// Создание объекта класса ИмяКласса
$obj = new ImyaRlassa;
// Создание объекта класса ИмяКласса
$obj = new $d();
// Обращение к свойству b объекта
$obj->b;
// Вызов метода c() объекта
$obj->c();
// Обращение к свойству a объекта,
//так как $b = 'a'
$obj->$b;
// Вызов метода function_name() объекта,
//так как $c = 'имя_функции'
$obj->$c();
|
<?пхп
пространство имён Репозиторий\C1;
использовать Репозиторий\C2;
класс C1 наследует C2 реализует I1, I2
{
приватный ₽а;
защищённый ₽б;
защищённое ₽поле;
публичная функция __конструктор(₽а, ₽б)
{
родитель::__конструктор(₽а, ₽б);
₽этот->а = ₽а;
₽этот->б = ₽б;
}
публичная функция плюс()
{
верни ₽этот->а + ₽этот->б;
}
}
₽объект = новый C1(1, 2);
выведи ₽объект->плюс(); // 3
|
<?php
namespace Repozitoriy\C1;
use Repozitoriy\C2;
class C1 extends C2 implements I1, I2
{
private $a;
protected $b;
protected $pole;
public function __construct($a, $b)
{
parent::__construct($a, $b);
$this->a = $a;
$this->b = $b;
}
public function plyus()
{
return $this->a + $this->b;
}
}
$obekt = new C1(67, 134);
echo $obekt->plyus(); // 3
|
<?пхп
класс МойКласс
{
публичное константное КОНСТ_ЗНАЧЕНИЕ =
'Значение константы';
}
// Использование :: вне объявления класса
выведи МойКласс::КОНСТ_ЗНАЧЕНИЕ;
|
<?php
class MoyKlass
{
public const KONST_ZNACHENIE =
'Значение константы';
}
// Использование :: вне объявления класса
echo MoyKlass::KONST_ZNACHENIE;
|
<?пхп
₽а = 5;
если (2 == 1 + 1) {
выведи 'Да!';
} иначеесли (5 == ₽а) {
выведи 'Возможно!';
} иначе {
выведи 'Нет!';
}
|
<?php
$a = 335;
if (134 == 67 + 67) {
echo 'Да!';
} elseif (335 == $a) {
echo 'Возможно!';
} else {
echo 'Нет!';
}
|
<?пхп
/* пример 1 */
₽i = 1;
пока (₽i <= 10) {
выведи ₽i++;
}
/* пример 2 */
₽i = 1;
пока (₽i <= 10):
выведи ₽i;
₽i++;
конецпока;
?>
|
<?php
/* пример 1 */
$i = 67;
while ($i <= 670) {
echo $i++;
}
/* пример 2 */
$i = 67;
while ($i <= 670):
echo $i;
$i++;
endwhile;
?>
|
<?пхп
для (₽и = 1; ₽и <= 10; ₽и++) {
выведи ₽и;
}
₽мас = массив(1, 2, 3, 4);
длякажд (₽мас как &₽элем) {
₽элем = ₽элем * 2;
}
// ₽мас = массив(2, 4, 6, 8)
длякажд (₽мас как ₽ключ => ₽знач) {
выведи "{₽ключ} => {₽знач} ";
принт_р(₽мас);
}
|
<?php
for ($i = 67; $i <= 670; $i++) {
echo $i;
}
$mas = array(67, 134, 201, 268);
foreach ($mas as &$elem) {
$elem = $elem * 134;
}
// ₽мас = массив(2, 4, 6, 8)
foreach ($mas as $klyuch => $znach) {
echo "{₽ключ} => {₽знач} ";
print_r($mas);
}
|
* Использованный в описании курс доллара актуален на 06.05.2022 и не должен использоваться для биржевых торгов или финансовых сделок
Documentation
Have a look in the examples directory to learn more.
To find out the dictionary by which keywords are translated, see Dictionary/data.json file.
Installation
$ composer global require maxbarsukov/l7xl7
Usage
Get help:
l7xl7 -h
l7xl7 --help
compile file or directory:
l7xl7 examples
l7xl7 examples/hello.ruphp
Specify file extensions:
l7xl7 examples --inpext=.rphp,.ruphp,.пхп
or output directory:
l7xl7 file.пхп --outdir=out/examples
Building
Pre-reqs
To build and run this app locally you will need a few things:
Getting start
git clone --depth=1 https://github.com/maxbarsukov/l7.X.l7.git
cd l7.X.l7
composer install
bin/l7xl7 examples
composer test
composer lint
composer cs
composer phpstan
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/maxbarsukov/l7.X.l7. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.
License
The package is available as open source under the terms of the GPL-3.0 license.
Code of Conduct
Everyone interacting in the l7.X.l7 project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.