Прелагаю вашему вниманию цикл статей, посвященный проекту Phalanger. Думаю, данный цикл будет интересен как PHP-разработчикам, желающим окунуться в мир .NET, так и .NET-разработчикам, по какой-либо причине имеющим дело с php-скриптами.
Phalanger — это open-source проект компилятора PHP для .NET (вот незадача, в каком блоге размещать?).
Phalanger позволяет:
Проект Phalanger ведет свою историю с 2003 года (тогда он назывался PHP.NET). Группа студентов физико-математического факультета Карлова университета в рамках курсовой работы решила выяснить возможность компилирования динамически типизированного языка, такого как PHP, в среде .NET, а также возможность дальнейшей оптимизации работы. Об этом проекте я узнал около 4 лет назад, и тогда я воспринимал его именно как студенческую шалость :) Тем более, что на какое-то время после выпуска версии 1.0, работы по проекту были очень вялыми (а то и вообще не велись). Но, сейчас Phalanger имеет версию 2.1, сайт обзавелся новым дизайном, и работа, судя по всему, кипит. И это радует.
Что же предлагает нам версия 2.1?
Итак, как я уже говорил выше, Phalanger позволяет не просто запускать готовое php-приложение, но и использовать библиотеки .NET в php-скриптах с минимальными доработками исходного кода. Как это возможно? В реализацию PHP в Phalanger добавлены некоторые возможности, которые отсутствуют в «оригинальном» PHP, например, импорт пространств имён. Вот как выглядит использование очень удобного класса WebClient:
В этом примере содержимое главной страницы ресурса php-compiler.net выгружается в html-файл на диске d:.
Также в синтаксисе PHP можно использовать частичные классы:
и даже… LINQ(!):
Кроме того, PHP может использоваться как язык построения .NET-приложений (консольных, WinForms, ASP.NET). Вот, например, как выглядит простая ASP.NET страница:
Стало интересно? :) Тогда в следующей части скачаем, установим, настроим Phalanger; начнём дорабатывать php-скрипты и писать .NET-приложения на PHP!
Что это?
Phalanger — это open-source проект компилятора PHP для .NET (вот незадача, в каком блоге размещать?).
Phalanger позволяет:
- запускать имеющийся php-код без существенных изменений и при этом использовать всю мощь библиотек .NET;
- писать .NET приложения, компилирующиеся в обычные .net-сборки, позволяя вам использовать преимущества компилируемых языков для вашего любимого PHP.
Краткая история
Проект Phalanger ведет свою историю с 2003 года (тогда он назывался PHP.NET). Группа студентов физико-математического факультета Карлова университета в рамках курсовой работы решила выяснить возможность компилирования динамически типизированного языка, такого как PHP, в среде .NET, а также возможность дальнейшей оптимизации работы. Об этом проекте я узнал около 4 лет назад, и тогда я воспринимал его именно как студенческую шалость :) Тем более, что на какое-то время после выпуска версии 1.0, работы по проекту были очень вялыми (а то и вообще не велись). Но, сейчас Phalanger имеет версию 2.1, сайт обзавелся новым дизайном, и работа, судя по всему, кипит. И это радует.
Что же предлагает нам версия 2.1?
Кратко о возможностях
Итак, как я уже говорил выше, Phalanger позволяет не просто запускать готовое php-приложение, но и использовать библиотеки .NET в php-скриптах с минимальными доработками исходного кода. Как это возможно? В реализацию PHP в Phalanger добавлены некоторые возможности, которые отсутствуют в «оригинальном» PHP, например, импорт пространств имён. Вот как выглядит использование очень удобного класса WebClient:
<?php
import namespace System;
import namespace System:::Net;
function download($path, $name)
{
$client = new WebClient;
$client->DownloadFile(new Uri($path), $name);
}
download("http://www.php-compiler.net", "d:\\test.html");
?>
В этом примере содержимое главной страницы ресурса php-compiler.net выгружается в html-файл на диске d:.
Также в синтаксисе PHP можно использовать частичные классы:
<?
import namespace WinForms;
namespace WinForms {
partial class Form1 {
function foo(){}
}
и даже… LINQ(!):
$x =
from $numbers as $n
where $n > 50
select $n
Кроме того, PHP может использоваться как язык построения .NET-приложений (консольных, WinForms, ASP.NET). Вот, например, как выглядит простая ASP.NET страница:
Default.aspx
<%@ Page Language="PHP" AutoEventWireup="false" CodeFile="Default.aspx.php" Inherits="_Default" Title="Click" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Click</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Literal runat="server" ID="ClickResult"></asp:Literal>
<asp:Button ID="Button1" runat="server" Text="Click me" OnClick="Button1_Click" />
</div>
</form>
</body>
</html>
Default.aspx.php
<?
import namespace System;
import namespace System:::Data;
import namespace System:::Configuration;
import namespace System:::Collections;
import namespace System:::Web;
import namespace System:::Web:::Security;
import namespace System:::Web:::UI;
import namespace System:::Web:::UI:::WebControls;
import namespace System:::Web:::UI:::WebControls:::WebParts;
import namespace System:::Web:::UI:::HtmlControls;
partial class _Default extends System:::Web:::UI:::Page
{
protected function Button1_Click($sender, $e)
{
$this->ClickResult->Text = "You clicked me!";
}
}
?>
Стало интересно? :) Тогда в следующей части скачаем, установим, настроим Phalanger; начнём дорабатывать php-скрипты и писать .NET-приложения на PHP!