見出し画像

名前空間

<?php declare(strict_types=1); ?>
<body>
<?php
    require_once dirname(__FILE__) . '/ofice/word/Writer.php';
    require_once dirname(__FILE__) . '/ofice/excel/Writer.php';

		// new 名前空間\クラス名
    $writer = new \Ofice\Word\Writer();
    $writer->write();

    $writer = new \Ofice\Excel\Writer();
    $writer->write();
?>
</body>
<?php
declare(strict_types=1);
// namespace 名前空間\サブ名前空間 
namespace Ofice\Excel;

// Excelファイルの書き出しクラス
class Writer
{
// Excelファイルに書き出すメソッド
    public function write() : void
    {
        print 'excel ファイルを書き出す。' . PHP_EOL;
    }
}
<?php
declare(strict_types=1);
// namespace 名前空間\サブ名前空間 
namespace Ofice\Word;

// Wordファイルの書き出しクラス
class Writer
{
// Wordファイルに書き出すメソッド
    public function write() : void
    {
        print 'word ファイルを書き出す。' . PHP_EOL;
    }
}

出力結果:word ファイルを書き出す。 excel ファイルを書き出す。

  • 名前空間を定義する → namespace 名前空間 ;

  • サブ名前空間を定義 → namespace 名前空間 \ サブ名前空間1 \ サブ名前空間2 ;

// ----------------- 名前空間 [ ofice ] -------------------------
//
// //////////////////////////////////////////////////////
// // サブ名前空間[ Word ] —— Writerクラス、 Readerクラス
// /////////////////////////////////////////////////////
//
// //////////////////////////////////////////////////////
// //サブ名前空間[ Excel ] —— Writerクラス、 Readerクラス
// //////////////////////////////////////////////////////
//
// ----------------------------------------------------------------

名前空間を使ってクラスをカテゴリーわけができる。
名前空間に所属するクラスを呼び出す → 名前空間 \ クラス名
\Ofice\Word\Writer  のように、名前空間をルートからたどる書式を「 完全修飾名 」(絶対パス)という。
□ 相対パスでクラスを呼び出す □

<?php
declare(strict_types=1);
namespace Ofice;

require_once dirname(__FILE__) . '/word/Writer.php';
require_once dirname(__FILE__) . '/excel/Writer.php';

class File 
{
    public function setWordProperty() : void
    {
        $writer = new Word\Writer();
        $writer->write();
    }
    public function setExcelProperty() : void
    {
        $writer = new Excel\Writer();
        $writer->write();
    }
}
<?php declare(strict_types=1); ?>
<body>
<?php
    require_once dirname(__FILE__) . '/ofice/File.php';

    $file = new \Ofice\File();
    
    $file->setExcelProperty();
    $file->setWordProperty();
?>
</body>

出力結果:excel ファイルを書き出す。 word ファイルを書き出す。
呼び出し元のプログラムファイルが名前空間[ Ofice ]に所属するような場合は、自分の名前空間を起点に[ Word\Writer ]
のように相対パスで指定すことが可能。
相対パスと絶対パスの違いは → 先頭に \ があるかないか


コメント
あとすこしあとすこし。。。オブジェクト指向。。

この記事が気に入ったらサポートをしてみませんか?