use は名前空間を使用するだけですが、
クラスを呼び出すには、クラスファイルをロードするか、自動的にロードする必要があります。
いずれかのクラスが導入された場合でも、自動ロード機構がなければエラーが報告されます
useのいくつかの用途
namespace Blog\Article; class Comment { } //创建一个BBS空间(我有打算开个论坛) namespace BBS; //导入一个命名空间 use Blog\Article; //导入命名空间后可使用限定名称调用元素 $article_comment = new Article\Comment(); //为命名空间使用别名 use Blog\Article as Arte; //使用别名代替空间名 $article_comment = new Arte\Comment(); //导入一个类 use Blog\Article\Comment; //导入类后可使用非限定名称调用元素 $article_comment = new Comment(); //为类使用别名 use Blog\Article\Comment as Comt; //使用别名代替空间名 $article_comment = new Comt();
1 . 最初の導入方法(自動読み込み機構がある場合)
use OSS\OssClient; // 表示引入Class 'OSS\OssClient'
を使う場合は
$ossClient = new OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
か、こちらの
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
が使えます!
2. 2番目の導入方法(自動ロード機構がある場合)
import('@.ORG.OSS.OssClient'); // thinkphp中的加载机制
それを使用する場合は、phpに名前空間を自動的にロードする機構があると考えてください
フレームワークに名前空間をロードするだけですライブラリ ディレクトリ すべては次のように自動的に識別され、配置されます
ライブラリ フレームワーク
クラス ライブラリディレクトリ│ §─Think core Think クラス ライブラリ パッケージ ディレクトリ│ §─Org Org クラス ライブラリ パッケージ ディレクトリ
│ §─... 詳細クラス ライブラリ ディレクトリ
したがって、名前空間がある場合は、ファイルをインポートする必要はありません。
importで十分です。
3. autoload
PHP5では、未定義のクラスをインスタンス化するときに、この関数がトリガーされます。次の例を見てください:
$ossClient = new OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint, false); // 其中OSS是命名空间
index.php を実行すると、hello world が正常に出力されます。 Index.php には printit.class.php が含まれていないため、printit をインスタンス化する際に autoload 関数が自動的に呼び出されます。このとき、パラメータ $class の値は printit.class.php になります。 。
4.spl_autoload_register
spl_autoload_register() をもう一度見てください。この関数は autoload と同じ効果があります。簡単な例を見てみましょう:printit.class.php <?php class PRINTIT { function doPrint() { echo 'hello world'; } } ?> index.php <? function autoload( $class ) { $file = $class . '.class.php'; if ( is_file($file) ) { require_once($file); } } $obj = new PRINTIT(); $obj->doPrint(); ?>
spl_autoload_register() は
static