My Photo

« October 2014 | Main | December 2014 »

November 30, 2014

yumでインストールされるパッケージにどんなファイルが含まれているかを調べる

関連記事:
yumのコマンド・オプション

前の記事

redhat-lsb パッケージにインストールすると lsb_release コマンドもインストールされるようだ。
と書いたが、redhat-lsb パッケージに lsb_relase が含まれているわけではなく、依存関係によって一緒にインストールされる他のパッケージに含まれていた。
パッケージに含まれているファイルを確認する手順を以下に示す。

1.yum-downloadonly をインストール
yum でrpmファイルをインストールせずにダウンロードだけするために yum-downloadonly をインストールする。
CentOS 6 でパッケージ名が yum-plugin-downloadonly 変わっている(参考サイト1)。

# yum install yum-downloadonly

2.RPMファイルをダウンロードする
yum-downloadonly をインストールしたことで yum コマンドで --downloadonly オプションを使えるようになる。以下のコマンドで rpm ファイルをダウンロードする。

# yum install --downloadonly --downloaddir=<ダウンロード先ディレクトリ> <パッケージ>

3.rpmコマンドでRPMファイルに含まれるファイル一覧
rpmコマンドでRPMファイルに含まれるファイル一覧を表示する。

# rpm -qpl <RPMファイル>

redhat-lsbパッケージで上記の手順をやってみると40個のRPMファイルがダウンロードされ、redhat-lsb-core の中に lsb_release が含まれていった。

# rpm -qpl /tmp/testrpm/redhat-lsb-core-4.0-7.el6.centos.x86_64.rpm | grep lsb_release
/usr/bin/lsb_release
/usr/share/man/man1/lsb_release.1.gz

参考ページ:
未インストールのパッケージに含まれるファイル一覧を確認する方法(CentOS) - ike-daiの日記
RPMパッケージの管理に使うRPMコマンド使えるオプション一覧

November 27, 2014

CentOSのバージョンを確認する

関連記事:
VirtualBoxのCentOS6.5にGuest Additionsをインストール

VirtualBox上のCentOSが起動するとき、「CentOS 6.6」という表示が出ていた。インストールしたのは6.5だが、Guest Additions をインストールする前の "yum update" でバージョンが上がったようだ。
ディストリビューションはRedHat系では /etc/redhata-release に書かれている。

# cat /etc/redhat-release
CentOS release 6.6 (Final)

以前の記事でUbuntuサーバでは lsb_release コマンドでディストリビューションの情報が取れると書いたが、CentOSの最小インストールに lsb_release は含まれておらず、インストールする必要がある。redhat-lsb パッケージにインストールすると lsb_release コマンドもインストールされるようだ。

参考ページ:
Linuxのカーネル情報やディストリビューションを調べるコマンド - [Linux [Red Hatなど]/サーバー] ぺんたん info
Linux Standard Base - Wikipedia
How to install redhat-lsb rpm

November 26, 2014

VirtualBoxのCentOS6.5にGuest Additionsをインストール

関連記事:
VirtualBox+CentOS導入
VitrualBox+CentOS 6.5環境のネットワークの設定
CentOS 6.5にX Window Systemのインストール

以前の記事でホストOS-ゲストOSの間の共有フォルダの設定について書いたが、共有フォルダを使うにはゲストOSにGuest Additionsというのをインストールしないといけないらしい。
順序が前後したが、CentOSにGuest Additionsをインストールした。結構苦労した。

インストール失敗

VirtuBoxのメニューの「デバイス」>「Guest Additions のCDイメージを挿入」とすると、オートランのアプリケーションを実行するか確認ダイアログが表示される。実行に同意しインストーラが実行されたが、開いたターミナルに

yum install kernel-devel-2.6.32-431.el6.x86_64

Buiding the main Guest Additions module      [失敗]
(Look at /var/log/vboxadd-install.log to find out what went wrong)

と出ている。他に[OK]と出ているものもあるが、カーネルの何かについては失敗してるようだ。vboxadd-install.log を見ると

unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again.

とある。シェルに変数 KERN_DIR を設定すればいいらしい。
スナップショットで作業前の状態に戻して、以下のように KERN_DIR を設定。

# uname -r
2.6.32-431.el6.x86_64
# export KERN_DIR=/usr/src/kernels/`uname -r`

そして再度、インストールを試みる。「デバイス」>「Guest Additions のCDイメージを挿入」としたが、先ほどと違って何も起きない。/media の下にマウントもされていない。
最初に「デバイス」>「Guest Additions のCDイメージを挿入」としたときは、実際のPCの光学ドライブにCD-ROMを入れた時と同じようにオートランになっているアプリケーションが実行される。2回目以降は既に光学ドライブにCD-ROMが入っている状態なので何も起きない、ということだろか。
GUI環境で「コンピュータ」を押下すると「CD/DVD ドライブ: <Guest Additions のCD>」というのがある。それを押下すると、CD-ROMがマウントされてCD-ROMの中身が表示される。
それから端末で

# cd /media/<Guest Additions のCD>
# sh VBoxLinuxAdditions.run

とやった。けどまた失敗。
ログを見ると、カーネルのソースが見つからないと書かれていた。KERN_DIR にセットしたフォルダに実際にカーネルのソースがないとだめなのか。
カーネルのソースは "yum install kernel-devel" なのだが、やってみると仮想マシンの現在のカーネルのソースではなく、CentOS 6.5の最新のカーネルのソースを持ってきてしまう。ならばカーネルをバージョンを指定してと思い

# yum -y install kernel-devel-2.6.32-431.el6.x86_64

としたが、エラーが発生。yumのリポジトリ?には2.6.32-431.el6.x86_64のソースがないのかな。
rpmファイルを直接指定してやればいいらしいので、 kernel-devel-2.6.32-431.el6.x86_64.rpm でググってrpmファイルがあるところを探して、

# yum -y install ftp://ftp.muug.mb.ca/mirror/centos/6.5/os/x86_64/Packages/kernel-devel-2.6.32-431.el6.x86_64.rpm

としたらカーネルのソースがインストールされた。
けど、ここまでやって方針転換。

updateしてからにする

kernel-devel のインストールで現在のカーネルと違うソースコードが入っちゃうのはカーネルが古いから。カーネルとカーネルのソースコードを合わせるんなら、古いソースコードをインストールするのではなくカーネルの方をアップデートした方がいいじゃん、ということでカーネルのアップデートすることにした。
どうせアップデートするならカーネルだけじゃなくて全部アップデートすることに。以下のコマンドを実行。

# yum update

再起動すると、uname -r の値が 2.6.32-504.1.3.el6.x86_64 となった。
それから kernel-devel と、参考サイトでは一緒にインストールしていたので gcc、perl をインストール。
Guest Additionsのインストールってカーネルのソースが必要ってことはカーネルを再コンパイルしてるんだろう。そうすると gcc が必要ってのはわかる。perlはよくわからんが。make は最初から入っているらしい。gcc が入ってなくて make が入ってるって、なんか変な感じがする。まあ make はCコンパイラのためだけのアプリケーションじゃないのかもしれんが。

# yum -y install gcc kernel-devel perl

kern-develをインストールすると /usr/src/kernels に 2.6.32-504.1.3.el6.x86_64 ディレクトリができていて、中にソースコードがあった。
そのディレクトリのパスを KERN_DIR を設定。

# export KERN_DIR=/usr/src/kernels/2.6.32-504.1.3.el6.x86_64

そして VBoxLinuxAdditions.run を実行してGuest Additionsのインストール成功。長かった。
これで
・共有フォルダが有効になった。
・ホストOSとゲストOSのウィンドウ間でマウスがシームレスに使えるようになった。

参考ページ:
VirtualBox 上の CentOS6.5(64bit)に GuestAdditions をインストール @ Mac OS X - RAINGARDEN
mog project: How to Solve Vagrant+CentOS+VirtualBox Mount Error
密かなITエンジニアの備忘録:VirtualBoxのCentOS6.5にGuest Additionsをインストールする
CentOS 用の古いkernel-devel パッケージの検索 - ナレッジベース - Server Backup Manager: Docs, KB Articles, Technical Papers

November 25, 2014

CentOS 6.5にX Window Systemのインストール

関連記事:
VirtualBox+CentOS導入
VitrualBox+CentOS 6.5環境のネットワークの設定

VirtualBox上のCentOSにX Windows Systemをインストールした。
参考ページの通りにインストール、一般ユーザの追加をした。一般ユーザになって startx を実行するとGUI画面になった。しかし、キーボードとマウスが全然効かない。どうしようもないのでVirtualBoxのメニューから仮想マシンをリセット。
仮想マシンが再起動すると、BIOSの設定なのかCentOSの設定なのかよくわらかないがCUIの設定画面が出てきた。適当に設定、というか何もせずに「NEXT」を選んで進めた。それからCentOSに一般ユーザで起動してstartxしたらマウスが使えるようになった。

あと、GUIのメニューが日本語になるように .bash_profile に以下の1行を追加。

. /etc/sysconfig/i18n

これで起動すると下記のように一部のフォルダ名を日本語にするかどうか聞かれる。「Desktop」が「デスクトップ」になっても別にうれしくないので、「次回から表示しない」にチェックを入れて「古い名前のままにする」ボタンをクリック。

Screenshot

2014/12/02追記。
起動直後のログインからGUI環境(グラフィカルログイン)にするには、ランレベルを5に設定する。
ランレベルについては参考サイト3こちらの記事を参照。
現在のランレベルの設定は runlevel コマンドを使用する。

# runlevel
N3

ランレベルの設定は /etc/inittab に書かれている。これを下記のように5に変更することでグラフィカルログインになる。

id:5:initdefault:

参考ページ:
1.密かなITエンジニアの備忘録:CentOS6.5にGUI環境を組込む
2.CentOS 6.4に後からデスクトップ環境を追加 | Rutakeの技術メモ
3.起動設定・ランレベルの設定
4.Windowsユーザーに教えるLinuxの常識(10):Linux起動の仕組みを理解しよう[init/inittab編] (1/2) - @IT

November 24, 2014

VitrualBox+CentOS 6.5環境のネットワークの設定

関連記事:
VirtualBox+CentOS導入

VirtualBoxのネットワーク設定

VirtualBoxのネットワークの設定で「アダプター1」の「割り当て」はデフォルトで「NAT」になっている。NATのままで色々設定したのだが、どうにもホストOS(Windows)とゲストOS(CentOS)間の通信がうまくいかない。なので単純な「ブリッジアダプター」に変更した。
仮想マシンは既存のLAN上にある形となる。ホストOSとゲストOSは互いに同じLAN上にあるマシンとして通信できる。

CentOSの設定

インストール時に固定IPに設定することができるが変更しなかったので、インストール直後はでDHCPでIPアドレスを取得する状態になっている。これを固定IPに変える。
CentOSのネットワークの設定ファイルは以下の3つ。

  • /etc/sysconfig/network-scripts/ifcfg-eth○(○は0,1,2,...)
    :NICに依存する設定
  • /etc/sysconfig/network
    :NIC依存しない情報の設定
  • /etc/resolv.conf
    :DNS関する設定

固定IPにするには ifcfg-eth○ の修正だけでいいようだ。resolv.conf は ifcfg-eth○ にDNSサーバのIPアドレスを書けば自動的に更新される。
自分の環境の場合、ifcfg-eth0は以下。編集したのは
6行目:dhcp から static に変更。
14行目以降:追加。GATEWAYとDNS1にはLANのブロードバンドルータのIPアドレスを設定。

DEVICE=eth0
TYPE=Ethernet
UUID=450fad26-4439-45e1-a869-f16dff77664f
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=08:00:27:1D:BD:0F
PEERDNS=yes
PEERROUTES=yes
IPADDR=192.168.3.101
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=192.168.3.1

#2014/12/30追記
設定ファイルを変更したら、serviceコマンドでnetworkサービスを再起動して設定変更を反映する。
以下はGUI環境(日本語環境導入済み)で実行した場合。

# service network restart
インターフェース eth0 を終了中:  デバイスの状態: 3 (切断済み)
                                                           [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:  アクティブ接続の状態: アクティベート中
アクティブ接続のパス: /org/freedesktop/NetworkManager/ActiveConnection/2
状態: アクティベート済み
接続はアクティベート済み
                                                           [  OK  ]

参考ページ:
ネットワーク設定 | VirtualBox Mania
Virtual Box ブリッジ接続設定を行う - グロブ
うら紙のメモ 【CentOS 6.5】 IPアドレスを固定に変更した
綺麗な/etc/sysconfig/network-scripts/ifcfg-eth0の書き方 - Qiita
VirtualBox:CentOS6.4環境 Network設定 | よしまさのブログ
◇ネットワークの詳細設定(CentOS6)◇初心者のためのLinuxサーバー構築講座(CentOS 自宅サーバー対応)☆お便利サーバー.com☆

November 17, 2014

yumコマンド

CentOS 6.5にこれから色々とアプリケーションをインストールしていくので、yumについて調べた。

コマンドとオプション

yum install <パッケージ>
インストールする。
yum groupinstall <パッケージグループ>
パッケージグループをインストールする。「パッケージグループ」については
参考サイト9を参照。
yum clean packages
ダウンロードしたrpmファイルを削除する。

yum clean all
キャッシュ(今までダウンロードしたrpmファイル、ヘッダファイルなど)すべてを削除する。
yum update <パッケージ>
アップデートする。
yum remove <パッケージ>
アンインストールする。
yum list installed
既にインストールしたソフトウェアの一覧を表示する。
yum list
インストール可能なソフトウェアの一覧を表示する。
yum info
パッケージの情報を表示する。
yum check-update
yum list updates
インストールしたフトウェアでアップデートが必要(できる)一覧を表示する。
yum -v grouplist
インストール可能なパッケージグループを表示する。
-vオプションについて下で説明する。
yum groupinfo <パッケージグループ>
パッケージグループの情報を表示する。
yum deplist <パッケージ>
パッケージの依存関係を表示する。
yum repolist (all|<リポジトリ名>)
リポジトリを表示する。

grouplist の-vオプションは付けないと
PHP サポート
のような名前が表示される。この名前だとグループインストールするときパッケージグループ名を日本語で入力しなきゃいけなくて面倒。
-vオプションをつければ
PHP サポート (php)
と表示されて、カッコ内の "php" という名前でパッケージグループを指定したほうが楽なので、-vオプションは付けた方がいいと思う

yumのオプション
オプション 意味
-y 質問にすべてYesで答える。

yumの設定

yumの設定ファイルは
/etc/yum.conf
である。

yumのログファイル

上記の設定ファイルの yum.conf の logfileの項目で設定する。
デフォルトは /var/log/yum.log である。

yumで使用したrpmファイルがあるディレクトリ

yum.conf の keepcache の値を1にすると、/var/chache/yum の以下のディレクトリにダウンロードしたrpmファイルが保存される。デフォルトは0。

参考ページ:
1.yum
2.Linuxコマンド集 - 【 yum 】 パッケージを取得してインストール/アップデートをする:ITpro
3.yumコマンドを使う
4.yumコマンドで既にインストールしたソフトを調べる
5.yumでシステムのアップデート | hajichan.net technical version
6.yumでインストールされたファイル一覧を表示する方法 repoquery --list
7.yumに関するログ(ログファイル)を把握する|Linux Tips
8.6.2.2. パッケージの一覧表示
9.Yum のグループ機能を使ってパッケージ インストールを楽にする
10.CentOS/CentOSのPHP サポートをインストールしてみた - Linuxと過ごす
11.yumコマンドを使う
12.yumで使用したrpmファイルを保存する - kwyの日記
13.yum clean コマンドでキャッシュ削除・アップデートのチェックと実行 〜 CentOS6 | EasyRamble
14.yum(8): Yellowdog Updater Modified - Linux man page
15.6.3.5. Yum リポジトリを有効/設定/無効にする方法
16.[CentOS] 追加した yum リポジトリを一覧で確認するコマンド « Codaholic

November 12, 2014

VirtualBox+CentOS導入

少し前に家のノートPCにVirtualBox+CentOSの環境を作った。家で仕事関連の調査とか、あと仕事と関係なくちょっとLinuxを触ってみる環境として。バージョンはVirtualBoxが4.3.16で、CentOSが6.5。ホストOSはWindows 7 Home Premium(32ビット)。
インストールや設定は参考ページの手順をそのまま実行した。
VirtualBox導入前は「体系的に学ぶ 安全なWebアプリケーションの作り方」の付録CDに入っていたVMWare+Ubuntuを使っていた。VirtualBoxに代えたのはスナップショットが便利そうだと思って。あと会社でVagrantを使っている人がいるので、もしかしたら利用するかもというのもある。ゲストOSをCentOSにしたのは会社のサーバがCentOSなので。

共有フォルダの設定

CentOSとWindows 7との間でファイルをやりとりするための共有フォルダの設定は、Virtual Boxの「設定(S)」の「共有フォルダー」で行う。右側の追加ボタンを押して共有フォルダの設定を追加する。
「フォルダーのパス」の項目はホストOS側の共有フォルダのパス。
「フォルダー名」の項目のはゲストOS側の共有フォルダのディレクトリ名。実際の共有フォルダは CentOS 6.5 の場合、

/media/<「フォルダー名」に入力した値>

となる。

2014/11/26追記。
ホストOS-ゲストOS間の共有フォルダはゲストOSに Guest Additions というのをインストールしないと有効にならない。Guest Additions のインストールについての記事はこちら

参考ページ:
密かなITエンジニアの備忘録:Windows8にVirtualBoxをインストールする

November 09, 2014

2014秋アニメ途中経過

大体2話くらいまで見たところで感想を書いたのだが、忙しくてアップせずに放置してたらファイルが行方不明になったorz

1クールの半分くらいまできたが、視聴しているのが
・SHIROBAKO
・PSYCHO-PASS サイコパス 2
・甘城ブリリアントパーク
・ログホライズン(2期)
・Fate/stay night
・クロスアンジュ
・ヤマノススメ セカンドシーズン(夏アニメから継続視聴)

録画だけしているのが
・繰繰れ!コックリさん
・魔弾の王と戦姫
・ガンダム Gのレコンギスタ
・蟲師 続章(後半)

最近は仕事がそこそこ忙しくて消化するのが結構大変。

サイコパス2、甘ブリ、ログホラ、Fateは期待通りで面白い。言うことなし。

意外といいのが「SHIROBAKO」。P.A.WORKSと水島努ってかなり不安だったが、自分らの業界を描いているだけあってなかなか面白い。明らかに板野一郎をモデルにした「北野」というキャラクターが出てきたり、「イデポン 発動編」っていう回があったり、おっさんのアニオタをニヤリとさせることがちょいちょいあるし。
水島努はギャグやコミカルな話らそれなりにいいものを作る。「アザゼルさん」は面白かった。でもホラー・アクション・サスペンスな「BLOOD-C」は最悪だった。お笑い要素がない作品に起用したらアカン。あ、もしかして「BLOOD-C」はギャグアニメでそのセンスに俺が付いて行けなかっただけ?

クロスアンジュは非常に分かりやすい作品。
2話だか3話だかで、隊長と新人2人があっさり死んで驚いたが、決してシビアな話がメインというわけではない。基本的にはバカアニメ。やたら露出の多いコスチュームのねーちゃんがロボットに乗って戦う。そして毎回エロいサービスシーンがある。
話はめちゃくちゃ。3話くらいまでみて一番「なんじゃこりゃ?」って思ったのは、周りのキャラが主人公に「現状認識が甘い」とか言いながら現状を教えてあげていないこと。たしかに主人公は過去の自分にすがっていて現実を認めていなかったが、それにしたって敵が何なのかを教えずにいきなり戦闘に放り出すとかないでしょう。予備知識なしでいきなり目の前に巨大ドラゴンが出現したらそりゃパニックになるわ。結果、パニクった主人公のせいで隊長が死亡。そのために一部の隊員は主人公を恨んでいるが悪いのは隊長だろう。
声優は主役の水樹奈々のほか、田村ゆかり、キタエリ、小清水、小倉唯と主役級が並ぶ。数少ない男キャラには宮野真守と、まあ豪華。
ガンダムSEEDとそっくりのOP映像は笑うところか。まあ福田己津央は「クリエイター」ではないというのがこのOPでよくわかる。
適当にツッコミを入れながら気楽に見るにはちょうどいい。この前の島に漂着した回なんて途中、「この辺はどーでもいいや」と思って早送りしてしまったww

こっくりさんは1話見て面白かったんだけど、今期は見る作品が多いので泣く泣く録画だけしている。小野Dと広橋ってなんか既視感(既聴感?)があるなと思ったが、「WORKING!」か。

「魔弾の王と戦姫」はたまたまテレビつけたらやっていた。ラノベのファンタジーが原作で普通に面白そう。ただ薄着のねーちゃんが肌見せながら戦うアニメはクロスアンジュで間に合っているのでとりあえず録画だけしている。

蟲師は前半を面白く見ていたので後半も普通なら見るところだが、他の作品より始まるのが1週遅くてその間に見る作品が増えてしまったので録画だけにしている。

今期、予想外のがっかり作品がGレコ。4話まで見たが「次回が楽しみ」とは全く感じなかった。それにあのOP映像は仮だと思ったらあれで完成品とのこと。
他にも監督について悪い噂ばかり聞こえてくる。御大もさすがに衰えたってことか。残念だ。
一応録画だけはしているが、今後見るかどうかはわからない。

「七つの大罪」は面白そうだと思ったし1話は面白かった。でも今期は見る作品が多いし原作読めばいいかと思って切った。
実際、原作マンガを5巻まで読んだが王道ファンタジーで非常に面白い。今後も原作の方を追いかけていこう。

OP・ENDで良かったのは甘ブリのOP、AKINO from bless4「エクストラ・マジック・アワー」とサイコパス2のOP、凛として時雨「Enigmatic Feeling」。

「エクストラ・マジック・アワー」のPVに3人しか映ってない。AIKI(末っ子)はボランティア活動のために数年間、Bless4は休むそうだ。


録画だけしているアニメが多くてHDDレコーダーの空き容量がどんどん減っていく。年末年始の休みでなるべく消化したいが、まず「アルドノア・ゼロ」の前半を見なくちゃ。1月から後半が始まるから。
今期の作品では「蟲師」を見るくらいかなあ。帰省したら色々やることあって、ずーっとアニメ見てるわけにもいかないし。
#あとゲームもしたいし^^;

November 03, 2014

PHPメモ048:名前空間

名前空間を自分のコードで使ったことはないが、外部のライブラリに使われてることがあるので少し勉強してみた。

名前空間の宣言

名前空間の宣言には namespace を使う。ファイルの先頭で宣言しなければならない。
名前空間の影響を受けるのはクラス(抽象クラスやトレイトを含む)、インターフェイス、関数、定数である。
名前空間はバックスラッシュ(バックスラッシュが表示されない場合は¥)で区切って階層構造にすることができる。

名前空間の使用

名前空間に宣言した関数、クラスなどを使用するには、関数名やクラス名などの前に名前空間を書く。
このとき "\" から書き始めた場合は完全な名前空間、そうでない場合は現在の名前空間からの相対的な名前空間になる。

"\" 単独の場合はグローバル名前空間を示す。現在の名前空間にグローバルな関数・クラス・定数と同じ名前のものがある場合、"\名前" とするとグローバルな関数・クラス・定数を使うことができる。

定義済み定数 __NAMESPACE__ は現在の名前空間が格納される。
namespace キーワードは宣言ではない場合は現在の現在の名前空間である。

以下に例を示す。

namespace1.php

<?php
namespace MyNamespace;

function printAaa() {
	print("aaa[MyNamespace]\n");
}

function strftime($param) {
	return "strftime():param={$param}[MyNamespace]";
}

class DateTime {
	public function getTimestamp() {
		return 9999;
	}
}
?>

namespace2.php

<?php
namespace MyNamespace\sub;

function printAaa() {
	print("aaa[MyNamespace\\sub]\n");
}
?>

nmtest1.php。名前空間を完全修飾名で指定する例。

<?php
include 'namespace1.php';
include 'namespace2.php';

\MyNamespace\printAaa();
\MyNamespace\sub\printAaa();
?>

nmtest1.php の実行結果。5行目と6行目はともに関数名はprintAaa()だが、異なる名前空間を付けているので異なる関数が呼ばれる。

aaa[MyNamespace]
aaa[MyNamespace\sub]

nmtest2.php。useでエイリアス、インポートする例。また自分で宣言した名前空間とグローバルな名前空間で同じな前の関数、クラスを区別する例。

<?php
include 'namespace1.php';

use MyNamespace as nm;
use MyNamespace\DateTime;

$tmp = nm\strftime('%c');	// \MyNamespace の strftime()
print($tmp . "\n");

$tmp = \strftime('%c');		// グローバルな strftime()
print($tmp . "\n");

$dt = new DateTime();		// \MyNamespace の DateTimeクラス
$tmp = $dt->getTimestamp();
print($tmp . "\n");

$dt = new \DateTime();		// グローバルな DateTimeクラス
$tmp = $dt->getTimestamp();
print($tmp . "\n");
?>

nmtest2.php の実行結果。useキーワードを使用しているので、完全修飾名を使わずに名前空間に属する関数・クラスを使用している。

strftime():param=%c[MyNamespace]
11/03/14 20:43:01
9999
1415014981

nmtest3.php。名前空間を相対で指定する例。

<?php
namespace MyNamespace;

include 'namespace2.php';

sub\printAaa();		// 相対的に名前空間を指定

?>

nmtest3.php の実行結果。

aaa[MyNamespace\sub]

参考ページ:
PHP: 名前空間 - Manual
5分で分かる名前空間とオートロード
PHP での名前空間を適切に作成する

« October 2014 | Main | December 2014 »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof