码迷,mamicode.com
首页 > Web开发 > 详细

.Net Core开发日志——Peachpie

时间:2018-07-06 01:22:57      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:创建项目   工作   mic   程序集   包含   rop   函数   html   index   

.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项目整体还在开发阶段,但不影响其已经能完成些惊人的工作,例如,其官方网站虽是构建在WordPress上,但已经被Peachpie编译成可以在ASP.NET中运行。仅凭以下的图你一定不会想到这个网站是PHP写成的:

技术分享图片

在它的博客中可以看到关于此事的更详细信息。

如果你对PHP代码迁移到.Net平台这件事感兴趣的话,可以访问其在Github上的仓库,若是能为它添砖加瓦的话,那是再好不过了。

.Net Core开发日志——Peachpie

标签:创建项目   工作   mic   程序集   包含   rop   函数   html   index   

原文地址:https://www.cnblogs.com/kenwoo/p/9270680.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!