《PHP8上級試験対策》Pharアーカイブの作成と実行結果の確認

  • URLをコピーしました!

はじめに

PHP8上級試験では、Phar(PHP Archive)に関する出題が見られます。特に Phar クラスを用いたアーカイブ作成と、addFile() を使ったファイル追加、さらに phar:// スキームを介した読み込み挙動を理解しておくことは重要です。本記事では、試験問題集に出てきたコード例をベースに、Pharアーカイブの作成からクラス利用までの流れを整理します。

キーワード:Phar / addFile / phar:// / PHP8上級試験

目次

Pharアーカイブに格納→実行フロー図

┌─────────────┐
│   Hoge.php  │   ← 元のクラス定義ファイル
└──────┬──────┘
       │ addFile()
       v
┌─────────────┐
│  exam.phar  │   ← Pharアーカイブに格納
│   (Hoge.php)│
└──────┬──────┘
       │ require phar://
       v
┌─────────────┐
│    実行      │
│ object(Hoge) │
│ Hoge::test   │
└─────────────┘

アーカイブ追加対象ファイル

まずはアーカイブに追加する対象となる Hoge.php ファイルの中身です。

<?php
declare(strict_types=1);
error_reporting(-1);

class Hoge {
    public static function test() {
        echo __METHOD__, "\n";
    }
}

このファイルは、単純に Hoge クラスを定義し、test() メソッドを呼び出すとHoge::test という文字列を出力する仕組みになっています。

Pharアーカイブの作成

次に、Hoge.php を Phar アーカイブへ追加します。

<?php
declare(strict_types=1);
error_reporting(-1);

$phar = new Phar(__DIR__ . '/exam.phar');
$phar->addFile(__DIR__ . '/Hoge.php', 'Hoge.php');

ポイントは addFile(実ファイルのパス, アーカイブ内のパス) です。これにより exam.phar 内に Hoge.php が格納されます。

アーカイブ内のファイルを読み込む

作成した Phar からファイルを利用するには phar:// スキームを指定します。

<?php
declare(strict_types=1);
error_reporting(-1);

require_once('phar://exam.phar/Hoge.php');

$obj = new Hoge();
var_dump($obj);
Hoge::test();

実行結果

一時的に Phar アーカイブを作りたいだけなら:

php -d phar.readonly=0 xxxx.php

上記のコードを実行すると、以下の出力になります。

object(Hoge)#1 (0) {
}
Hoge::test
  • new Hoge();Hoge クラスのインスタンスが生成される
  • プロパティが無いため object(Hoge)#1 (0) { } が表示される
  • Hoge::test(); の呼び出しにより Hoge::test が出力される

試験対策ポイント

  • Phar::addFile() はファイルをアーカイブに追加する
  • 読み込みは必ず phar:// スキームを経由する
  • 実行結果は「インスタンスの var_dump 出力」と「メソッド呼び出し結果」の2点を押さえる

まとめ

Phar に関する問題は「アーカイブの作成」「addFile() の使い方」「phar:// による読み込み」の3点が頻出です。出力結果を確実にイメージできるようにしておくと試験対策になります。

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次