PHP包和导入

PHP包和导入,php,Php,我想要一个正常类型的类结构,比如 com.acme.module.Class.php 那么如何导入这样的包呢 在其他语言中,我可以做类似的事情 import "com.acme.module.Class" 或 在PHP5.3及更高版本中,我们有名称空间 根据,包名称以目录名的形式出现。i、 e.如果我有一个类Mauris\Acme\Controllers\Home(包名为Mauris\Acme\Controllers,类名为Home),我的类文件将命名为Home.php,并放在src/Mau

我想要一个正常类型的类结构,比如

com.acme.module.Class.php
那么如何导入这样的包呢

在其他语言中,我可以做类似的事情

import "com.acme.module.Class"


在PHP5.3及更高版本中,我们有名称空间

根据,包名称以目录名的形式出现。i、 e.如果我有一个类
Mauris\Acme\Controllers\Home
(包名为
Mauris\Acme\Controllers
,类名为
Home
),我的类文件将命名为
Home.php
,并放在
src/Mauris/Acme/Controllers
文件夹中

然后使用自动加载器(有一个),您可以直接将类“导入”到脚本中:

<?php
namespace Mauris\Acme\Actions;

require('autoloader.php');
$classLoader = new SplClassLoader();
$classLoader->register(); // register the autoloading callback

// the "import"
// the require() or include() statement is in the auto
use Mauris\Acme\Controllers\Home as HomeController;

$controller = new HomeController();
// if you don't use the "use" statement, you can also write:
// $controller = new \Mauris\Acme\Controllers\Home();

是的。。。Php拥有它。语法完全不同。命名空间应该是文件中的第一个构造。用
require
替换它,如果不需要PSR0标准,我只需使用spl_autoload_register()。@jack-可能也是。但我认为还是采用编码标准更好:您可以更好地与其他库集成(例如,通过Composer和Packagist)。
<?php
namespace Mauris\Acme\Actions;

require('autoloader.php');
$classLoader = new SplClassLoader();
$classLoader->register(); // register the autoloading callback

// the "import"
// the require() or include() statement is in the auto
use Mauris\Acme\Controllers\Home as HomeController;

$controller = new HomeController();
// if you don't use the "use" statement, you can also write:
// $controller = new \Mauris\Acme\Controllers\Home();