PHPの名前空間について

https://github.com/Seldaek/monolog/tree/master/src/Monolog

このPHPのソースコードを見てたのですが、
requireやincludeなどが使われていません。
namespaceやuseを使うだけでファイルのインポートが可能なんでしょうか。

Windowsで使うとクラスがない、というようなFatalエラーになるのですが
Windowsファイルシステムには対応してないのでしょうか。
そのためコードにrequireなどを書き加えているのですが、他に方法はないでしょうか

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/03/17 10:49:06
  • 終了:2012/03/18 01:42:59

回答(1件)

id:oil999 No.1

oil999回答回数1728ベストアンサー獲得回数3202012/03/17 11:44:41

ポイント100pt

PHP5.xでは、外部の完全修飾名をインポートするのに use 演算子を用います。
http://php.net/manual/ja/language.namespaces.importing.php

include や require は「ファイルを読み込む」ための関数ですので、修飾名をインポートするのとは別の機能です。

  • id:tobeoscontinue
    未定義のクラス/インターフェイスを使用すると例外が発生しますがPHP5.3.0 以降ではそれをキャッチしてそこでrequireすることで見かけ上無いように見えます。http://www.php.net/manual/ja/language.oop5.autoload.php
    https://github.com/Seldaek/monolog/blob/master/tests/bootstrap.php
    にあるようなspl_autoload_register()を定義することでFatalエラーにはならないと思います(未確認)。
    $fileのパスの部分は適切に設定する必要があるでしょうが。
  • id:redara
    https://github.com/Seldaek/monolog/blob/master/doc/usage.md

    Documentに詳しく書いてありました。
    単体ではautoloader機能がないので、Symfony2などのClassComponentLoaderなどを使って利用するとのことでした。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません