質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Namespace

各要素の名前の重複による衝突が起こらないよう、一意の名前をつけなければならない範囲のことであり、また、プログラミングにおける識別名を付加する機能のをNamespace(名前空間)と呼ぶ。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

12478閲覧

【PHP】クラスとネームスペースをインポートする際のバックスラッシュについて

skytreebutrainy

総合スコア65

Namespace

各要素の名前の重複による衝突が起こらないよう、一意の名前をつけなければならない範囲のことであり、また、プログラミングにおける識別名を付加する機能のをNamespace(名前空間)と呼ぶ。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/01/05 03:48

編集2015/02/05 03:22

下記の二つはどう違うのでしょうか?

use Exception;
use \Exception;

又は

use Hoge\Fuga;
use \Hoge\Fuga;

マニュアルには下記のように書いてあります。

ネームスペースの名前は先頭にバックスラッシュを付ける必要はなく、つけることができません。なぜならインポートされる名前は現在のネームスペースと相対的にプロセスされる訳ではないので、条件を満たす必要があります (条件を満たしているネームスペースはFoo\Barのようにネームスペースのセパレータを含みます)

しかしこれがよくわかりません。上記の「許可されていない」ものもちゃんと作動するからです。

下記のコードでzend_do_useを見てみると、is_global (先頭にバックスラッシュがあるときはセットされています)は警告にのみ使われています。

namespace {
use Exception;
}
下記の警告を表示します: "The use statement with non-compound name 'Exception' has no effect". (しかし\Exceptionを使ったときは警告を投げません.)

何か抜けているところがあるのでしょうか?それともこれらは微妙に違うのですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

マニュアルはバックスラッシュは不要だと明記しているだけなので、使っても特に変化はないはずです。しかし、質問者さんが指摘されているように、PHPには許可されていないと書いてありますが、これは間違っています。

マニュアルにはもう一つ触れている部分があります。下記の手段をすすめているところです。

// グローバルなクラスをinportする
use \ArrayObject;

インポートされた名前が、現在のnamespacesと相対的にプロセスされていないのであれば、use \ArrayObject と use ArrayObjectは同じ意味を持っているはずです。グローバルなもの以外、use ArrayObjectは他に何を指すことができますか?そのため、エンジンはグローバルなものをインポートします。

要するに、最初の質問を答えるならば、その2つに違いはありません。

投稿2015/01/05 04:42

編集2015/02/05 03:24
mickey_m

総合スコア188

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問