jam*_*mes 5 php namespaces legacy-code
我有一大块遗留的 php 代码,我需要与之交互,如下所示:
//legacy.php
function foo() {
}
function bar() {
}
Run Code Online (Sandbox Code Playgroud)
我希望能够将这些遗留函数包装在一个类中或以某种方式 require_once 而不污染全局命名空间或更改原始文件。
您可以在类中使用命名空间或静态方法:
// 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)
| 归档时间: |
|
| 查看次数: |
1968 次 |
| 最近记录: |