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でのPDF出力 テーブル

PDFで何かを出力する場合、ほとんどが納品書や請求書などの帳票でしょう。 これらもfpdfで出力することができます。 Contents1 ソース2 参考リンク ソース [crayon-65114e2b …

no image

PHPのPDFライブラリに関して。

今月PHPでPDFを出力する要件があったんで色々見てきましたので、まとめを。 昨年もちょっとやりましたが、色々と面倒です。 fpdfはかなり古くダメダメっぽいですね。昨年はじめにPDFを使う要件があっ …

no image

cakeでのJOINについて&session

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

no image

PHPでのログ出力 PHP monolog

PHPでデバッグするときは、画面上にvar_dumpで情報を見ていたのですが、これができない場面ではログへの出力を行うことになります。 いままではフレームワークに標準でついてたんですが、これを機に一般 …

no image

Facadeパターンについて(Laravelを題材に)

LaravelのFacadeについて自作する機会があったので、メモ。 デザインパターンの一種かと思います。 Contents1 サンプル2 使い所3 メリット4 デメリット5 参考リンク サンプル h …

アーカイブ