2

次のような通常のタイプのクラス構造が必要です。

com.acme.module.Class.php

では、このようなパッケージをインポートするにはどうすればよいですか?

他の言語では、私は次のようなことをすることができます

import "com.acme.module.Class"

また

import "com.acme.module.*"

これはPHPで可能ですか?

4

1 に答える 1

6

PHP 5.3以降では、名前空間があります。

PSR-0標準によると、パッケージ名はディレクトリ名の形式になっています。つまり、クラスMauris\Acme\Controllers\Home(パッケージ名はMauris\Acme\Controllers、クラス名はHome)がある場合、クラスファイルに名前が付けられHome.php、フォルダーに配置されますsrc/Mauris/Acme/Controllers

次に、オートローダー(簡略化されたPSR-0準拠のオートローダーがあります)を使用して、クラスをスクリプトに直接「インポート」できます。

<?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();

詳細については、http://php.net/manual/en/language.namespaces.importing.phpをご覧ください。

于 2012-11-18T01:26:39.513 に答える