【PHP】名前空間とエイリアスについて再確認の巻
参考
【PHP超入門】名前空間(namespace・use)について - Qiita
PHP: 名前空間 - Manual
以下のようなコードだとエラーが起きる
try.php
<?php require_once 'lebron.php'; require_once 'curry.php'; shoot();
lebron.php
<?php function shoot() { echo '2ポイントシュート'; }
curry.php
<?php function shoot() { echo '3ポイントシュート'; }
shoot()と言われてもlebronのshootか、curryのshootか分からない(名前の衝突が起こっている)のでエラーとなる。なので名前空間を利用してエラーを回避する。
try.php
<?php require_once 'lebron.php'; require_once 'curry.php'; lebron\shoot(); curry\shoot();
lebron.php
<?php namespace lebron; function shoot() { echo '2ポイントシュート'; }
curry.php
<?php namespace curry; function shoot() { echo '3ポイントシュート'; }
こんな感じにディレクトリ感覚で指定もできる。
try.php
<?php namespace nba; require_once 'lebron.php'; require_once 'curry.php'; //修飾形式 lakers\forward\shoot(); warriers\guard\shoot(); //完全修飾形式 \nba\lakers\forward\shoot(); \nba\warriers\guard\shoot();
lebron.php
<?php namespace nba\lakers\forward; function shoot() { echo '2ポイントシュート'; }
curry.php
<?php namespace nba\warriers\guard; function shoot() { echo '3ポイントシュート'; }
<?php namespace sports\basketball\nba\lakers\forward; function shoot() { echo '2ポイントシュート'; }
try.php
<?php require_once 'lebron.php'; require_once 'curry.php'; sports\basketball\nba\lakers\forward\shoot();
長い名前空間の時いちいち書くのがめんどくさいので、useを使ってエイリアスを作成し楽をする。
<?php require_once 'lebron.php'; require_once 'curry.php'; //やり方① use sports\basketball\nba\lakers\forward as king; //やり方② use sports\basketball\nba\warriers\guard; king\shoot(); guard\shoot();