在 PHP 中,如何将过程代码包装在一个类中?

jam*_*mes 5 php namespaces legacy-code

我有一大块遗留的 php 代码,我需要与之交互,如下所示:

//legacy.php

function foo() {
}

function bar() {
}
Run Code Online (Sandbox Code Playgroud)

我希望能够将这些遗留函数包装在一个类中或以某种方式 require_once 而不污染全局命名空间或更改原始文件。

Mat*_*hew 2

您可以在类中使用命名空间或静态方法:

// original file: foo.php
class Foo
{
  public static function foo() { }
  public static function bar() { }
}

// new file:
require 'foo.php';

class MyNewClass
{
  public function myfunc()
  {
    Foo::foo();
  }
}

$x = new MyNewClass();
$x->myfunc();
Run Code Online (Sandbox Code Playgroud)

两者都需要对文件进行轻微修改。例如,调用bar()必须更改为Foo::bar()上面的示例(具有静态方法的类)。

或者,使用命名空间:

namespace foo;

use \Exception;
// any other global classes

function foo() { }
function bar() { }
Run Code Online (Sandbox Code Playgroud)

在你的文件中:

require 'foo.php';

foo\foo();
foo\bar();
Run Code Online (Sandbox Code Playgroud)