skillup

技術ブログ

PHP

PHPの名前空間

投稿日:2015年11月24日 更新日:

PHPでも5.3以降はJavaのパッケージのように名前空間を使うことができます。

いままではライブラリやアプリケーションの開発者は、PHPに組み込まれている関数やクラス名や他の人が作ったライブラリとの名前衝突を防ぐためにプレフィックスなどをつけるようにしていました。

例 Net_UserAgent_Mobile

名前空間を使うことで名前の衝突を防ぐことができ、長々しい関数名やクラス名をつけることがなくなります。

namespace 名前空間\サブ名前空間

クラス、関数、定数に関して影響があり、それぞれ名前空間を利用したフルパスでアクセスが可能

下記サンプルを参考にしてみてください。

ディレクトリ構成は下記のとおりです。

com/sample/Hoge.php

com/sample/Foo.php

com/practice/Bar.php

注意点としては冒頭の\があるかないかです。

小さいところなんですが、これが あれば絶対パス。ないと相対パスと判断します。慣れてないと見抜きにくいので要注意です。

同一の名前空間上にあるかそうでないかを判断するうえで大切です。

これがあるとないとでパスの指定方法が変わってきて動かない・・ということが結構あるので要注意です。

useの使い方

useを使うことでフルパスでなく、任意の名称を付けることができます。

com/sample/Hoge.php

com/sample/Foo.php

com/practice/Bar.php

一般的には下記のようにasを使わずにuseをフルパスで呼び出して、最後のクラス名でアクセスすることが一般的なようです。

追記:ひさびさに自分のものを読んだんですが、わかりにくい。

下記リンクのほうがはるかによくまとまっててわかりやすいですね・・・

5分で理解するPHPのnamespaceとuseの使い方

さらに網羅してある情報が完璧なのはこちらです。

【PHP超入門】名前空間(namespace・use)について

※useは対象のクラスに名前空間を付ける処理ですがrequireではないので合わせてrequireをするようにしましょう。一般的にはautoloaderを使う方法がメジャーです。autoloaderについてはこちら

またutf-8のBOMがついているとエラーになることがあるので、BOMなしにしておきましょう。

namespace と utf-8 の微妙な関係

文字コードのUTF-8について、BOM無しと、BOM付き、というのがあったのですが、具体的に、どう異なるのでしょうか?

-PHP

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

PHPの配列操作

ながらく放置してました・・・ PHPを久々にやったんですが、やっぱり配列の関数・ライブラリが充実している分、作業がサクサクすすみますね。配列の操作でいろいろと学ぶところがあったんで掲載します。 Con …

no image

heroku+cakePHPによるメール送信

herokuに作ったアプリでメール送信機能を実装したのでその時のメモを。 まずメール送信自体はmb_send_mailなどではなく、SendGridというアプリを使います。 使い方ですが、heroku …

no image

Laravelでのアプリ間のログイン連携

実務でLaravelで複数のアプリを作成し、アプリ同士でログイン連携をさせるという機能が実務であったため、メモします。 例えばhttp://example.comという売上管理のアプリでログイン認証を …

no image

cakeでのJOINについて&session

Contents1 cakeでのJOIN2 cakeでのsessionについて cakeでのJOIN cakePHPでは基本、hasManyなどの修飾子を使えば、リレーションをとることができますが、検 …

no image

PHPでのコンソール入力に関して

PHPはほとんどの場合、ブラウザでURLをたたいてWEBサーバーから呼び出されるパターンがほとんどです。 ところが、コンソールから使いたい場合などもあるでしょう。 コンソールから入力する場合、なんらか …

アーカイブ