PHP转C#转换器

18

我需要将这段PHP代码转换为C#。是否有工具或网站可以实现这一点?

public function call($method, array $params) {
    // Add the format parameter, only 'json' is supported at the moment
    if (!array_key_exists('format', $params)) {
        $params['format'] = 'json';
    }

    $url = "{$this->_url}/{$method}";
    $ch = $this->_getCurlHandle($url);

    if (!$ch) {
        throw new Fuze_Client_Exception("Unable to create a cURL handle");
    }

    // Set the request parameters
    $queryString = http_build_query($params);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $queryString);

    // Fire!
    $result = $this->_executeCurl($ch);

    // All API response payloads should be valid json with 'code' and
    // 'message' members
    $json = json_decode($result);
    if ( !($json instanceof stdClass)
            || !isset($json->code)
            || !isset($json->message) ) {

        throw new Fuze_Client_ServerException(
            "Invalid JSON payload received", $result, $info['http_code']);
    }

    if ( $json->code >= 500 && $json->code < 600) {
        throw new Fuze_Client_FaultException($json);
    }

    return $json;
}

这似乎是更大的东西的一部分。你需要确切翻译什么方面?curl 部分吗? - Pekka
相关:https://dev59.com/4HRC5IYBdhLWcg3wAcM3 - RQDQ
可能不是你所期望的,但Facebook的HipHop for PHP可以将PHP转换为C++。(是的,我知道你要求的是C#,但这是我能想到的最接近的东西:D)。虽然不能为你提供任何转换后的代码,但如果你追求的是性能提升,它可以帮到你。 - Sondre
如果只是针对上面那几行代码的话,我认为老派的手工转换应该是最简单和最快捷的方式。如果是针对几千行代码的话,考虑使用Phalanger(如我在下面已经提到的)。如果这不起作用,请尝试使用Interop而不是转换(例如通过服务桥接调用)。 - Beachwalker
请查看此网站...它可以工作...只需要更改类和名称的一部分... https://react-etc.net/entry/peachpie-online-repl-transpiles-php-to-net-core-compatible-c-sharp - Amirhossein
7个回答

42

我不知道有任何工具可以将PHP转换为C#。如果有这样的工具,我也不会相信它能正确地完成转换。因此,您的选择只有:

  • 学习C#
  • 将其交给能够进行转换的人。

3
+1, 我同意。将源代码从一种语言转换为另一种语言是一个复杂的任务,我怀疑是否有任何工具可以使其成为可能,更不用说可靠性了 :). - mingos
4
不必进行转换,可以将现有的PHP代码整合到.NET中,例如使用Phalanger,如https://dev59.com/8W435IYBdhLWcg3wxDH_#8007020所述。它正在被使用。 - Jakub Míšek
@JakubMíšek 然后逆向工程哈。实际上,转换简单的块不应该太难,只是没有人认为它值得解决。 - jungle_mole
1
请注意,“将源代码转换”称为“编译”。这没有任何问题。您可以直接编译F#,C++/CLI,TypeScript,并从C#中使用它们。为什么不编译PHP?使用上面提到的Phalanger或https://github.com/iolevel/peachpie。 - Jakub Míšek

19

也许你应该看看Phalanger。它不是一个转换器,而是允许您为.Net编译PHP代码-因此您应该能够从C#调用php方法。 这是一个开源项目,源代码托管在这里


3
Phalanger已经停止开发,请使用https://www.peachpie.io代替。 - Jakub Míšek

7

4

4
没有转换器,但您可以看一看Haxe。它是一个多平台开源语言,可以编译成其他语言,包括C#。语法类似于PHP。
无论如何,对于这个代码片段,手动转换是最好的方法。

1
你可以使用SWI-Prolog的 transpiler 库将PHP的一个小子集自动转换为C#。以下是使用此库的短程序:
:- use_module(library(transpiler)).
:- set_prolog_flag(double_quotes,chars).
:- initialization(main).

main :- 
    Input = "function add($a,$b){return $a.$b;}function squared($a){return $a*$a;}function add_exclamation_point($parameter){return $parameter.\"!\";}",
    translate(Input,'php','c#',X),
    atom_chars(Y,X),
    writeln(Y).

这是C#程序的输出:

This is the program's output in C#:

public static string add(string a,string b){
        return a+b;
}
public static int squared(int a){
        return a*a;
}
public static string add_exclamation_point(string parameter){
        return parameter+"!";
}

-3
$sql = "SELECT num.name,num.on from table WHERE on = '0'";

$query = mysql_query($sql);

$arr =mysql_fetch_array($query);

$s = array($arr['name']);

if(in_array('1',$s)){echo "yes";}else{echo "no";} 

无关于问题或主题 - Asuquo12

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接