.Net Core 的生态圈随着开源社区的力量不断注入至其中, 正在变得越来越强盛, 并且不时得就出现些有意思的项目, 比如 Peachpie, 它使得 PHP 的代码迁移到. Net Core 项目变得可能.
从创建简单的入门程序开始可以更容易地体会其特性.
首先安装 Peachpie 的模板:
dotnet new -i Peachpie.Templates::*
接着创建项目:
dotnet new web -lang PHP -o helloPHP
然后切换目录至 Server 文件夹运行程序:
- cd Server
- dotnet run
最后通过浏览器访问 http://localhost:5004/:
Peachpie 的运行机制很简单, 将 PHP 文件编译成. Net 平台的 dll 文件, 这样就可以如同普通的. Net 代码库一般被其它程序调用.
它包含三个部分:
编译器 (peach.exe 或者 Peachpie.NET.Sdk), 将 PHP 文件编译成. Net 程序集
运行时 (Peachpie.Runtime.dll), 提供程序运行时所需的功能
代码库 (Peachpie.Library.dll), 包含 PHP 的函数, 类及其它的实现
再回到开始的入门程序代码探究一番, 可以发现关键点在于 Website 目录下的 Website.msbuildproj 文件中:
- <Project Sdk="Microsoft.NET.Sdk">
- <PropertyGroup>
- <OutputType>Library</OutputType>
- <TargetFramework>netstandard2.0</TargetFramework>
- <AssemblyName>helloPHP</AssemblyName>
- </PropertyGroup>
- <ItemGroup>
- <Compile Include="**/*.php" />
- </ItemGroup>
- <ItemGroup>
- <DotNetCliToolReference Include="Peachpie.Compiler.Tools" Version="0.9.0-*" />
- <PackageReference Include="Peachpie.NET.Sdk" Version="0.9.0-*" PrivateAssets="Build" />
- </ItemGroup>
- </Project>
在 Peachpie.Compiler.Tools 与 Peachpie.NET.Sdk 两者的作用下, 包含 index.php 文件在内的所有 PHP 文件都最终会被编译成一个 dll 文件.
用使用这个 dll 文件也很简单, 在 Startup 类的 Configure 方法里这样调用一下:
app.UsePhp(new PhpRequestOptions(scriptAssemblyName: "helloPHP"));
运行在 ASP.Net 中的 PHP 站点便诞生了.
Peachpie 项目整体还在开发阶段, 但不影响其已经能完成些惊人的工作, 例如, 其官方网站 https://www.peachpie.io/ 虽是构建在 WordPress 上, 但已经被 Peachpie 编译成可以在 ASP.NET 中运行. 仅凭以下的图你一定不会想到这个网站是 PHP 写成的:
在它的博客 https://www.peachpie.io/2018/03/peachpie-on-peachpie.html 中可以看到关于此事的更详细信息.
如果你对 PHP 代码迁移到. Net 平台这件事感兴趣的话, 可以访问其在 Github 上的仓库 https://github.com/peachpiecompiler/peachpie , 若是能为它添砖加瓦的话, 那是再好不过了.
来源: https://www.cnblogs.com/kenwoo/p/9270680.html